Potřebuji pomoc s příkladem na pochopení vnořené třidy, mám nějaký rozpracovaný kod, ale nejsem si jistý jestli je to správně. Děkuji za jakoukoliv pomoc :)
/***
* <p>
* Vytvořte třídu MyStrucute, která bude potomkem této abstraktní třídy. Ten
* bude:
*
* <li>Implementovat metodu {@link #getAnonymousClass()}.
*
* <li>Třída MyStrucute bude obsahovat metodu {@link #getAnonymousClass()}, která bude vracet instanci objektu
* {@link AnonymousClass}
*
* <li>Třída MyStrucute bude obsahovat metodu {@link #getInterClass()}, která bude vracet instanci objektu
* {@link InterClass}
*
* <li>Třída MyStrucute bude obsahovat metodu {@link #getStaticInterClass()}, která bude vracet instanci objektu
* {@link StaticInterClass}
*
*
*/
public abstract class Structure {
protected final String structureFiled = "structureFiled";
/**
* Implementujte tuto metodu tak, aby vracela anonymní instanci třídy {@link AnonymousClass}.
*/
public abstract AnonymousClass getAnonymousClass();
/**
* Implementujte tuto metodu tak, aby vracela anonymní instanci třídy {@link InterClass}.
*/
public abstract InterClass getInterClass();
/**
* Implementujte tuto metodu tak, aby vracela anonymní instanci třídy {@link StaticInterClass}.
*/
public abstract StaticInterClass getStaticInterClass();
/**
* Rozhraní pro Anonymní třídu.
*/
public static interface AnonymousClass {
/**
* Implementujte tuto metodu, tak, aby vrátila řetězec "AnonymousClass".
*
* @return definovaný řetězec.
*/
public abstract String anonymousClassMethod();
}
/**
* Abstraktní třída pro vnitřní třídu. Její definice bude součástí třídy {@link Structure}
*
*/
public abstract class InterClass {
protected final String structureFiled = "badField";
/**
* Implementujte tuto metodu, tak, aby vrátila řetězec textový v protected proměnné
* {@link Structure#structureFiled}. Dejte pozor null;na to, aby jste vrátily správný řetězec, který náleží objektu
* {@link Structure} a nikoliv řetězec, patřící objektu {@link InterClass}
*
* @return definovaný řetězec.
*/
public abstract String interClassMethod();
}
/**
* Abstraktní třída pro vnitřní statickou třídu. Její definice bude součástí třídy {@link Structure}
*/
public static interface StaticInterClass {
/**
* Implementujte tuto metodu, tak, aby vrátila řetězec "StaticInterClass".
*
* @return definovaný řetězec.
*/
public abstract String staticInterClassMethod();
}
}
import Structure;
public class MyStructure extends Structure{
@Override
public AnonymousClass getAnonymousClass() {
return new AnonymousClass() {
@Override
public String anonymousClassMethod() {
return "AnonymousClass";
}
};
}
@Override
public InterClass getInterClass() {
return new InterClass() {
@Override
public String interClassMethod() {
return new MyStructure().structureFiled;
}
};
}
@Override
public StaticInterClass getStaticInterClass() {
return new StaticInterClass() {
@Override
public String staticInterClassMethod() {
return "StaticInterClass";
}
};
}
public static void main(String[] args) {
MyStructure struk = new MyStructure();
System.out.println(struk.getInterClass().interClassMethod());
}
}