Informatika4-2018/Gyakorlat7

A MathWikiből
(Változatok közti eltérés)
Gaebor (vitalap | szerkesztései)
(Új oldal, tartalma: „== Abstract == Egy interface (lásd előző gyakorlat) egyetlen metódusa sincsen implementálva, adattagja is csak bizonyos tupajdonságú lehet. Egy '''abstract''' o…”)
Újabb szerkesztés →

A lap 2018. október 25., 12:53-kori változata

Abstract

Egy interface (lásd előző gyakorlat) egyetlen metódusa sincsen implementálva, adattagja is csak bizonyos tupajdonságú lehet. Egy abstract osztály azonban keverheti az implementált és implementálatlan metódusokat, adattagja is tetszőleges lehet.

public abstract class A {
    protected float x_;
    public A()  // default konstruktor
    {
        x_ = 0.0f;
    }
    public A(float x)  // konstruktor
    {
        x_ = x;
    }
    public void SetX(float x)
    {
        x_ = x;
    }
    public abstract float f(); // nincsen implementálva
}

abstract-al illethetünk egy metódust, ekkor kötelezően a bennfoglaló osztály is abstract kell legyen. De abstract osztálynaklehetnek nem abstract, azaz implementált metódusai.

abstract osztály nem példányosulhat, de belőle származtatott osztály igen, ha minden absztrakt metódusát implementálja (már nem absztrakt többé).

public class B extends A {
    public B(float x)  // konstruktor az ős osztály konstruktorát
    {
        super(x);
    }
    public float f()
    {
        return Math.sin(x_);
    }
}

Ekkor B már nem absztrakt, lehet példányosítani:

A a = new B(3);
a.f(); // valójában a B.f fut le (override)
Személyes eszközök