package cm.abstracts.limit;
//这个类用来测试:隐藏抽象类的子类
public class ExampleFfourtyThree {
public static void main(String[] args) {
//子类B对象的向上转型,此时不需要知道B这个子类的存在
A a = A.getInstance();
//此时调用被子类B覆写过的抽象方法print()
a.print();
}
}
//创建定义一个抽象类,关键字abstract,抽象类必有子类
abstract class A{
//声明一个抽象方法
public abstract void print();
//创建定义一个内部抽象类子类,抽象类一个特定的系统子类
//通过内部类的方式定义抽象类子类
//static:不需开辟内存空间保存子类的方法和属性,程序运行完毕就是释放掉,在主方法中通过子类名直接调用其方法和属性
private static class B extends A{
@Override
public void print() {
System.out.println("岁月会记得曾付出的一切,并给自己其他人从未知道的回报");
}
}
//static:通过类A直接调用
public static A getInstance() {
return new B();
}
}
彦舜原创