Informatika4-2018/Gyakorlat8

A MathWikiből
A lap korábbi változatát látod, amilyen Gaebor (vitalap | szerkesztései) 2018. november 8., 12:17-kor történt szerkesztése után volt.

Előző - Fel - Következő

Tartalomjegyzék

Öröklődésről

Többszörös öröklődés

Egy osztály nem tud egynél több osztályból öröklődni, vagyis az alábbi hibás:

public class A
{
    ...
}
 
public class B
{
    ...
}
 
public class C extends A, B
{
   // compile error
}

De lehet több interface-t implementálni:

public interface A
{
    ...
}
 
public interface B
{
    ...
}
 
public class C implements A, B
{
    // mind A és B metódusait is implementálni kell.
}

Részleges implementálás

Lehet egy interface-t részben is implementálni, ha az implementáció maga absztrakt osztály.

public interface A
{
    ...
}
 
public abstract class B implements A
{
    // A bizonyos metódusait implementálhatom, bizonyosakat nem
}
 
public class C extends B
{
    // Itt a maradék metódust is implementálni kell.
}

Final

Egy osztály is lehet final (végleges), ekkor nem lehet belőle öröklődni! Ez akkor jó, ha garantálni akarom, hogy más ne tudjon olyan kódot az enyémhez illeszteni, ami (override segítségével) megváltoztatja az én kódomat.

public class A
{
    public float f(float x)
    {
         // számol valamit
    }
}
 
public class B extends A
{
    public float f(float x)
    {
         // számol más valamit
    }
}

Ekkor nem lehetek biztos abban, hogy az A típusú objektumaim az én függvényemet használják.

A a;
...
a.f(3.14f); // lehet B.f é A.f is

Ha A final, akkor a fentebbit kivédhetem.

Megjegyzés

Egy osztály nem lehet egyszerre absztrakt és final! Bár nem feltétlenül értelmetlen, de kérdéses, hogy mire is lenne jó.

Design

Előző - Fel - Következő

Személyes eszközök