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

Kursinnehåll

Java OOP

Java OOP

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

book
OOP-Principer: Arv

Arv

Låt oss diskutera principen inom OOP – Arv.

Arv är en mekanism som möjliggör skapandet av klasser baserade på en annan klass.

  • Klassen som fungerar som bas kallas förälder eller superklass;

  • Klassen som skapas baserat på föräldraklassen kallas barn, subklass eller avkomling.

På så sätt kan barnklassen ärva egenskaper och attribut från en annan klass – föräldraklassen (dess metoder och variabler).

Du kan ärva en klass med hjälp av nyckelordet extends. Syntaxen för en barnklass som ärver från en föräldraklass ser ut så här:

Child.java

Child.java

copy
123
class Child extends Parent { // properties and methods }

Låt oss titta på ett exempel på hur arv fungerar i kod. Vi har en klass Bird med vissa fält och metoder, och det finns en klass Parrot med sina egna fält och metoder. En papegoja är en fågel, så logiskt sett bör papegojan ärva från klassen Bird:

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

Bird.java

Bird.java

Parrot.java

Parrot.java

Main.java

Main.java

copy
12345678910111213141516171819
package animals.birds; public class Bird { public String color; public boolean canFly; public int maxAge; public void eat() { System.out.println("The bird is eating"); } public void fly() { if (canFly) { System.out.println("The bird is flying!"); } else { System.out.println("This bird can't fly :("); } } }

Låt oss förstå vad som händer i dessa bilder:

  1. Vi skapar en klass Bird, som är föräldraklassen i vårt fall. Denna klass har sina egna fält och metoder;

  2. Vi skapar en klass Parrot, som använder nyckelordet extends för att ärva från föräldraklassenBird. Klassen Parrot är en barnklass och har sina egna fält och metoder. Dessutom, som barnklass, ärverParrotalla fält och metoder från föräldraklassen Bird;

  3. Vi skapar ett objekt av klassen Parrot i main-metoden och ser att vi kan initiera fälten för bådeföräldra- och barnklassen. Först initierar vi fälten i föräldraklassen Bird, och sedan initierar vi fälten i barnklassen Parrot. Därefter anropar vi metoderna: först metoderna i föräldraklassen och sedan metoden i barnklassen.

På så sätt använde vi arv för att ärva klassen Bird.

Varför gör vi detta?

När vi har många olika underklasser till Bird, inte bara Parrot, till exempel finns även Pigeon och Penguin. I det fallet kommer vi att ha många duplicerade fält, såsom boolean canFly. Det första arvet hjälper till med är att undvika duplicerade kodfragment. Dessutom förbättras läsbarheten avsevärt. I praktiken stöter du sällan på klassen Bird och dess underklasser direkt, men arv används ofta, särskilt med gränssnitt.

Notera

Du kommer att lära dig om gränssnitt i nästa avsnitt av denna kurs.

Regler för arv

  • Ärva endast en klass. Java stöder inte multipelt arv. En klass kan bara ha en förälder;

  • Allt ärvs förutomprivate-variabler och metoder.

Notera

Du kan inte ärva från dig själv!

Tidigare nämnde jag att en underklass skulle ha tillgång till alla variabler och metoder i föräldern. Men det är inte helt sant.

I verkligheten är alla metoder och variabler markerade med private-modifieraren inte tillgängliga för underklassen.

  • Skriv över föräldraklassens metod.

Låt oss föreställa oss att vi ärver en klass, men det finns vissa delar av den ärvda koden som vi inte gillar. Anta att vi vill att en specifik metod ska fungera annorlunda än i föräldraklassen.

För att skriva över en metod från föräldraklassen skriver vi @Override ovanför den:

Parrot.java

Parrot.java

copy
1234
@Override public void eat() { System.out.println("The parrot is eating"); }

I koden ovan har vi överskuggat metoden från föräldraklassen, och nu när denna metod anropas från barnklassen kommer den överskuggade metoden att köras!

  • Förhindra arv.

Om du inte vill att någon ska ärva din klass, använd final-modifikatorn före den. Till exempel:

Bird.java

Bird.java

Parrot.java

Parrot.java

copy
123
public final class Bird { // fields and methods }

På detta sätt, genom att använda nyckelordet final, har vi förbjudit arv av klassen Bird.

Detta är bara de grundläggande reglerna och egenskaperna för arv. Det är ett omfattande ämne som du kommer att använda mycket ofta. Under kursens gång kommer du att bekanta dig med andra aspekter av arv och använda dem oftare.

1. Varför behöver vi arv i Java?

2. Hur många klasser kan vi ärva från samtidigt?

3. Hur kan vi förhindra arv i Java?

question mark

Varför behöver vi arv i Java?

Select the correct answer

question mark

Hur många klasser kan vi ärva från samtidigt?

Select the correct answer

question mark

Hur kan vi förhindra arv i Java?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 2. Kapitel 2

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: Arv

Arv

Låt oss diskutera principen inom OOP – Arv.

Arv är en mekanism som möjliggör skapandet av klasser baserade på en annan klass.

  • Klassen som fungerar som bas kallas förälder eller superklass;

  • Klassen som skapas baserat på föräldraklassen kallas barn, subklass eller avkomling.

På så sätt kan barnklassen ärva egenskaper och attribut från en annan klass – föräldraklassen (dess metoder och variabler).

Du kan ärva en klass med hjälp av nyckelordet extends. Syntaxen för en barnklass som ärver från en föräldraklass ser ut så här:

Child.java

Child.java

copy
123
class Child extends Parent { // properties and methods }

Låt oss titta på ett exempel på hur arv fungerar i kod. Vi har en klass Bird med vissa fält och metoder, och det finns en klass Parrot med sina egna fält och metoder. En papegoja är en fågel, så logiskt sett bör papegojan ärva från klassen Bird:

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

Bird.java

Bird.java

Parrot.java

Parrot.java

Main.java

Main.java

copy
12345678910111213141516171819
package animals.birds; public class Bird { public String color; public boolean canFly; public int maxAge; public void eat() { System.out.println("The bird is eating"); } public void fly() { if (canFly) { System.out.println("The bird is flying!"); } else { System.out.println("This bird can't fly :("); } } }

Låt oss förstå vad som händer i dessa bilder:

  1. Vi skapar en klass Bird, som är föräldraklassen i vårt fall. Denna klass har sina egna fält och metoder;

  2. Vi skapar en klass Parrot, som använder nyckelordet extends för att ärva från föräldraklassenBird. Klassen Parrot är en barnklass och har sina egna fält och metoder. Dessutom, som barnklass, ärverParrotalla fält och metoder från föräldraklassen Bird;

  3. Vi skapar ett objekt av klassen Parrot i main-metoden och ser att vi kan initiera fälten för bådeföräldra- och barnklassen. Först initierar vi fälten i föräldraklassen Bird, och sedan initierar vi fälten i barnklassen Parrot. Därefter anropar vi metoderna: först metoderna i föräldraklassen och sedan metoden i barnklassen.

På så sätt använde vi arv för att ärva klassen Bird.

Varför gör vi detta?

När vi har många olika underklasser till Bird, inte bara Parrot, till exempel finns även Pigeon och Penguin. I det fallet kommer vi att ha många duplicerade fält, såsom boolean canFly. Det första arvet hjälper till med är att undvika duplicerade kodfragment. Dessutom förbättras läsbarheten avsevärt. I praktiken stöter du sällan på klassen Bird och dess underklasser direkt, men arv används ofta, särskilt med gränssnitt.

Notera

Du kommer att lära dig om gränssnitt i nästa avsnitt av denna kurs.

Regler för arv

  • Ärva endast en klass. Java stöder inte multipelt arv. En klass kan bara ha en förälder;

  • Allt ärvs förutomprivate-variabler och metoder.

Notera

Du kan inte ärva från dig själv!

Tidigare nämnde jag att en underklass skulle ha tillgång till alla variabler och metoder i föräldern. Men det är inte helt sant.

I verkligheten är alla metoder och variabler markerade med private-modifieraren inte tillgängliga för underklassen.

  • Skriv över föräldraklassens metod.

Låt oss föreställa oss att vi ärver en klass, men det finns vissa delar av den ärvda koden som vi inte gillar. Anta att vi vill att en specifik metod ska fungera annorlunda än i föräldraklassen.

För att skriva över en metod från föräldraklassen skriver vi @Override ovanför den:

Parrot.java

Parrot.java

copy
1234
@Override public void eat() { System.out.println("The parrot is eating"); }

I koden ovan har vi överskuggat metoden från föräldraklassen, och nu när denna metod anropas från barnklassen kommer den överskuggade metoden att köras!

  • Förhindra arv.

Om du inte vill att någon ska ärva din klass, använd final-modifikatorn före den. Till exempel:

Bird.java

Bird.java

Parrot.java

Parrot.java

copy
123
public final class Bird { // fields and methods }

På detta sätt, genom att använda nyckelordet final, har vi förbjudit arv av klassen Bird.

Detta är bara de grundläggande reglerna och egenskaperna för arv. Det är ett omfattande ämne som du kommer att använda mycket ofta. Under kursens gång kommer du att bekanta dig med andra aspekter av arv och använda dem oftare.

1. Varför behöver vi arv i Java?

2. Hur många klasser kan vi ärva från samtidigt?

3. Hur kan vi förhindra arv i Java?

question mark

Varför behöver vi arv i Java?

Select the correct answer

question mark

Hur många klasser kan vi ärva från samtidigt?

Select the correct answer

question mark

Hur kan vi förhindra arv i Java?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 2. Kapitel 2
some-alt