Új hozzászólás Aktív témák

  • MrSealRD

    veterán

    válasz Dave-11 #5766 üzenetére

    A kérdés ennél kicsit bonyolultabb.

    Itt érdemes megnézni a Private Members in a Superclass című részt.

    Tehát az alosztály nem örökli az ősosztály privát tagjait. Azonban ha ezekhez a tagokhoz az ősosztályban írsz public vagy protected metódusokat akkor az alosztály ezáltal hozzáférést kap az ősosztály privát adattagjához...

    Ezt egyébként gyakorlati úton is lehet bizonyítani.:
    Ha a ClassA-t átírod az alábbi kódban a saját osztályaid nevére, akkor ez kiírja az adott osztály adattagjait. Ez a kód amúgy a stackoverflow-ról van. Van ott pár érdekes kérdés erről a témáról.
    Szóval ha lefuttatod akkor látni fogod, hogy az ősosztályodra listázni fogja az adattagokat, de a belőle származó alosztály esetében nem fog megjelenni a listában az ősosztály private adattagjai.

    public static void main(String[] args) {
    inspect(ClassA.class);
    }


    static <T> void inspect(Class<T> klazz) {
    Field[] fields = klazz.getDeclaredFields();
    System.out.printf("%d fields:%n", fields.length);
    for (Field field : fields) {
    System.out.printf("%s %s %s%n",
    Modifier.toString(field.getModifiers()),
    field.getType().getSimpleName(),
    field.getName()
    );
    }
    }

    De olvastam olyat is ahol azt írták, hogy inkább azt modjuk örökli, de nincs hozzáférése... :U

Új hozzászólás Aktív témák

Hirdetés