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();
}
}
彦舜原创
本文通过一个具体的Java代码示例,展示了如何使用抽象类和内部类来实现方法的隐藏与覆写。通过向上转型,子类的方法可以在不了解具体子类的情况下被调用,体现了多态性和封装性。
8万+

被折叠的 条评论
为什么被折叠?



