Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära OOP-Principer: Abstraktion | Oop
Java OOP
course content

Kursinnehåll

Java OOP

Java OOP

1. Hur Man Arbetar Med IDE?
2. Oop
3. Interface

book
OOP-Principer: Abstraktion

Abstraktion

Nu har vi kommit till den sista men mycket viktiga principen inom OOP: Abstraktion. Ordet "abstraktion" låter ganska abstrakt, och kortfattat innebär denna princip att vi bör förlita oss på abstraktion snarare än på en specifik implementation. Detta kan låta komplicerat nu. Låt oss börja med att titta på definitionen:

Till exempel har vi en klass som heter Person, och många olika klasser ärver från den. Person har olika fält och metoder som är gemensamma för alla klasser. Men när vi har en klass som BasketballPlayer, blir egenskapen height avgörande, medan för en klass som Driver är height irrelevant och inte viktig. Det är här abstraktion kommer in i bilden. Genom att ärva från en abstraktion kan vi göra parametern height valfri, så vi behöver inte använda den där det inte är nödvändigt.

Det kan låta komplicerat, så låt oss gå vidare till ett exempel:

Car.java

Car.java

copy
123456789
public abstract class Car { String model; int year; int maxSpeed; String color; public abstract void move(); public abstract void stop(); }

Klassen Car representerar inte något specifikt. Det finns inget som bara är en Car; det finns sedaner, lastbilar, traktorer. Därför förlitar vi oss på abstraktionen som kallas Car. För att förenkla det ytterligare: Car är en mall utifrån vilken vi skapar specifika bilklasser.

Observera syntaxen:

Detta är syntaxen för att deklarera en abstrakt klass. Observera även syntaxen för att deklarera en abstrakt metod:

En abstrakt metod har ingen kropp; detta är dess huvudsakliga kännetecken. Subklasser till en abstrakt klass kommer att överskrida denna abstrakta metod för att definiera sin egen implementering, med hjälp av polymorfism.

Låt oss titta närmare på vad en abstrakt klass är:

Observera att vi inte kan skapa ett objekt av en abstrakt klass; det kommer att resultera i ett fel:

Abstrakta klasser befriar oss från att bara hantera "objekt"; de ger oss ett grundläggande tillstånd och beteende. Med bil-exemplet ska varje bil ha en modell, tillverkningsår, maxhastighet och färg. De ska också kunna köra och stanna. Det är allt; därefter utformar du dina specifika klasser baserat på denna abstrakta ritning.

Regler för att skapa en abstrakt klass

  1. En abstrakt klass är en klass som innehåller minst en abstrakt metod. Du kan skapa en abstrakt klass utan några abstrakta metoder, men då fyller den inget syfte. Du kan inte instansiera objekt av en abstrakt klass;

  2. Abstrakta metoder kan endast existera inom en abstrakt klass; du kan inte skapa abstrakta metoder utanför en abstrakt klass;

  3. Metoder inom en abstrakt klass kan vara antingen abstrakta metoder eller metoder med implementation;

  4. En klass som ärver från en abstrakt klass måste överskrida alla abstrakta metoder;

  5. Du kan ärva från maximalt en klass (abstrakt eller icke-abstrakt);

  6. En abstrakt klass ska representera de gemensamma egenskaperna och beteendet hos dess ärvande klasser. Vi kommer att diskutera detta mer i detalj när vi studerar SOLID-principerna.

Låt oss titta på ett exempel för att förstå hur subklasser ska överskrida abstrakta metoder genom att ärva från en abstrakt klass, med exemplet på barnklassen Truck:

Här är koden från skärmdumpen, omskriven för bättre läsbarhet och tydlighet:

Car.java

Car.java

Truck.java

Truck.java

Main.java

Main.java

copy
123456789
public abstract class Car { String model; int year; int maxSpeed; String color; public abstract void move(); public abstract void stop(); }

Låt oss titta närmare på vad som skrivits ovan i detalj:

  • Första bilden: Vi skapar en subklass Truck som kommer att ärva från den abstrakta klassenCar. Vi ser att IDE:n uppmanar oss att implementera de obligatoriska metoderna;

  • Andra bilden: Vi överskuggar de nödvändiga metoderna. Till exempel skriver vi att Truck har börjat köra och sedan stannat;

  • Tredje bilden: Vi skapar ett objekt i main-metoden. Observera den använda syntaxen: Car name = new Truck();. Vi börjar skapa objektet genom abstraktion och avslutar med en specifik implementation. Detta kallas komposition. Därefter tilldelar vi värden till fälten vid behov och anropar de överskuggade metoderna.

Voilà! Om du förstår allt har du lärt dig hur man använder en abstrakt klass!

Sammanfattning

Abstraktion är förmodligen den mest utmanande principen inom OOP att förstå, och det är ganska troligt att du inte har greppat allt just nu. Men tro inte att du är ensam om detta. Abstraktion är ett koncept som till en början är svårt för de flesta utvecklare att förstå. Med tiden kommer du att få en bättre förståelse för hur du arbetar effektivt med abstraktion och abstrakta klasser. Abstraktion är en avgörande princip eftersom den gör det möjligt för oss att göra våra program utbyggbara och mycket flexibla.

1. Vad är abstraktion i objektorienterad programmering?

2. Vilket av följande är sant om abstraktion?

3. Vad är syftet med en abstrakt klass i Java?

4. Hur bidrar abstraktion till kodens underhållbarhet?

question mark

Vad är abstraktion i objektorienterad programmering?

Select the correct answer

question mark

Vilket av följande är sant om abstraktion?

Select the correct answer

question mark

Vad är syftet med en abstrakt klass i Java?

Select the correct answer

question mark

Hur bidrar abstraktion till kodens underhållbarhet?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 2. Kapitel 7

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

course content

Kursinnehåll

Java OOP

Java OOP

1. Hur Man Arbetar Med IDE?
2. Oop
3. Interface

book
OOP-Principer: Abstraktion

Abstraktion

Nu har vi kommit till den sista men mycket viktiga principen inom OOP: Abstraktion. Ordet "abstraktion" låter ganska abstrakt, och kortfattat innebär denna princip att vi bör förlita oss på abstraktion snarare än på en specifik implementation. Detta kan låta komplicerat nu. Låt oss börja med att titta på definitionen:

Till exempel har vi en klass som heter Person, och många olika klasser ärver från den. Person har olika fält och metoder som är gemensamma för alla klasser. Men när vi har en klass som BasketballPlayer, blir egenskapen height avgörande, medan för en klass som Driver är height irrelevant och inte viktig. Det är här abstraktion kommer in i bilden. Genom att ärva från en abstraktion kan vi göra parametern height valfri, så vi behöver inte använda den där det inte är nödvändigt.

Det kan låta komplicerat, så låt oss gå vidare till ett exempel:

Car.java

Car.java

copy
123456789
public abstract class Car { String model; int year; int maxSpeed; String color; public abstract void move(); public abstract void stop(); }

Klassen Car representerar inte något specifikt. Det finns inget som bara är en Car; det finns sedaner, lastbilar, traktorer. Därför förlitar vi oss på abstraktionen som kallas Car. För att förenkla det ytterligare: Car är en mall utifrån vilken vi skapar specifika bilklasser.

Observera syntaxen:

Detta är syntaxen för att deklarera en abstrakt klass. Observera även syntaxen för att deklarera en abstrakt metod:

En abstrakt metod har ingen kropp; detta är dess huvudsakliga kännetecken. Subklasser till en abstrakt klass kommer att överskrida denna abstrakta metod för att definiera sin egen implementering, med hjälp av polymorfism.

Låt oss titta närmare på vad en abstrakt klass är:

Observera att vi inte kan skapa ett objekt av en abstrakt klass; det kommer att resultera i ett fel:

Abstrakta klasser befriar oss från att bara hantera "objekt"; de ger oss ett grundläggande tillstånd och beteende. Med bil-exemplet ska varje bil ha en modell, tillverkningsår, maxhastighet och färg. De ska också kunna köra och stanna. Det är allt; därefter utformar du dina specifika klasser baserat på denna abstrakta ritning.

Regler för att skapa en abstrakt klass

  1. En abstrakt klass är en klass som innehåller minst en abstrakt metod. Du kan skapa en abstrakt klass utan några abstrakta metoder, men då fyller den inget syfte. Du kan inte instansiera objekt av en abstrakt klass;

  2. Abstrakta metoder kan endast existera inom en abstrakt klass; du kan inte skapa abstrakta metoder utanför en abstrakt klass;

  3. Metoder inom en abstrakt klass kan vara antingen abstrakta metoder eller metoder med implementation;

  4. En klass som ärver från en abstrakt klass måste överskrida alla abstrakta metoder;

  5. Du kan ärva från maximalt en klass (abstrakt eller icke-abstrakt);

  6. En abstrakt klass ska representera de gemensamma egenskaperna och beteendet hos dess ärvande klasser. Vi kommer att diskutera detta mer i detalj när vi studerar SOLID-principerna.

Låt oss titta på ett exempel för att förstå hur subklasser ska överskrida abstrakta metoder genom att ärva från en abstrakt klass, med exemplet på barnklassen Truck:

Här är koden från skärmdumpen, omskriven för bättre läsbarhet och tydlighet:

Car.java

Car.java

Truck.java

Truck.java

Main.java

Main.java

copy
123456789
public abstract class Car { String model; int year; int maxSpeed; String color; public abstract void move(); public abstract void stop(); }

Låt oss titta närmare på vad som skrivits ovan i detalj:

  • Första bilden: Vi skapar en subklass Truck som kommer att ärva från den abstrakta klassenCar. Vi ser att IDE:n uppmanar oss att implementera de obligatoriska metoderna;

  • Andra bilden: Vi överskuggar de nödvändiga metoderna. Till exempel skriver vi att Truck har börjat köra och sedan stannat;

  • Tredje bilden: Vi skapar ett objekt i main-metoden. Observera den använda syntaxen: Car name = new Truck();. Vi börjar skapa objektet genom abstraktion och avslutar med en specifik implementation. Detta kallas komposition. Därefter tilldelar vi värden till fälten vid behov och anropar de överskuggade metoderna.

Voilà! Om du förstår allt har du lärt dig hur man använder en abstrakt klass!

Sammanfattning

Abstraktion är förmodligen den mest utmanande principen inom OOP att förstå, och det är ganska troligt att du inte har greppat allt just nu. Men tro inte att du är ensam om detta. Abstraktion är ett koncept som till en början är svårt för de flesta utvecklare att förstå. Med tiden kommer du att få en bättre förståelse för hur du arbetar effektivt med abstraktion och abstrakta klasser. Abstraktion är en avgörande princip eftersom den gör det möjligt för oss att göra våra program utbyggbara och mycket flexibla.

1. Vad är abstraktion i objektorienterad programmering?

2. Vilket av följande är sant om abstraktion?

3. Vad är syftet med en abstrakt klass i Java?

4. Hur bidrar abstraktion till kodens underhållbarhet?

question mark

Vad är abstraktion i objektorienterad programmering?

Select the correct answer

question mark

Vilket av följande är sant om abstraktion?

Select the correct answer

question mark

Vad är syftet med en abstrakt klass i Java?

Select the correct answer

question mark

Hur bidrar abstraktion till kodens underhållbarhet?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 2. Kapitel 7
some-alt