第七章 多态

7.1 再论向上转型

7.2 转机

Java中除了static方法和final方法(private方法属于final方法)之外,其他所有方法都是后期绑定。

class A{
public static void f(){System.out.println("A");}
}
class B extends A{
//@Override   //添加Override注解会报错,说明不能override,也就没有多态性
public static void f(){System.out.println("B");}
public static void main(String[] args) {
   A a = new B();
   a.f(); //打印:A   说明静态方法没有多态性
}
}

7.3 抽象类和抽象方法

包含抽象方法的类叫做抽象类

如果从一个抽象类继承,并想创建该新类的对象,那么就必须为基类中的所有抽象方法提供方法定义。如果不这么做,那么导出类便也是抽象类,且编译器会强制我们用abstract关键字来限定这个类。

7.4 构造器和多态

构造器并不具有多态性(它们实际上是static方法,只不过该static声明是隐式的)。

通过组合和集成方法来创建新类时,永远不必担心对象的清理问题,自对象通常都会留给垃圾回收器进行处理。如果确实遇到清理的问题,那么必须用心为新类创建dispose()方法(这里选用此名称;读者可以提出更好的)。并且由于继承的缘故,如果我们有其他作为垃圾回收一部分的特殊清理动作,就必须在导出类中覆盖dispose()方法。当覆盖被继承类的dispose()方法时,务必记住调用基类版本的dispose()方法;否则,基类的清理动作就不会方法。

初始化的实际过程是

1)在其他任何事物发生之前,将分配给对象的存储控件初始化为二进制的零

2)调用基类构造器。

3)按照声明的顺序调用成员的初始化方法。

4)调用导出类的构造器主体

因此,在构造器内唯一能够安全调用的那些方法是基类中的final方法。


7.5 用继承进行设计

RTTI (“运行时类型识别”)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值