第9章继承与多态•类的继承•Object类•定义Customer类及其子类•重写超类方法•塑型与多态9
1类的继承Java要求声明的每个类都有父类,当没有显式指定父类时,父类隐含为java
lang包中的Object类
子类对父类的继承是通过在类的声明中,用关键字extends来说明
1类的继承•私有属性和方法的继承子类不能直接访问从父类继承的私有属性及方法,但可以使用公有(及保护)方法进行访问
1类的继承•隐藏和覆盖隐藏(针对属性)和覆盖(针对方法)是指子类可以对从父类继承来的属性变量及方法重新加以定义
如果子类重新定义了从父类继承来的属性变量,则从父类继承的属性将被隐藏
1类的继承•属性隐藏例如,已知三个类:PhoneCard类、Number_PhoneCard类、D200_Card类
1类的继承•属性隐藏隐藏是指子类拥有了两个相同名字的变量,一个继承自父类,另一个由自己声明;当子类执行继承自父类的操作时,处理的是继承自父类的变量;当子类执行它自己声明的方法时,所操作的就是它自己声明的变量,继承自父类的变量就“隐藏”起来了
1类的继承•属性隐藏如何访问被隐藏的父类属性变量呢
一个方法是调用从父类继承的方法,则操作的是从父类继承的属性变量;另一个方法是使用super
1类的继承•属性隐藏例如:9
1类的继承•方法覆盖如果子类不需要使用从父类继承来的方法所实现的功能,则可以声明自己的方法
在声明的时候,使用相同的方法名及参数表,但执行不同的功能
这种情况称为方法覆盖
1类的继承•方法覆盖1)子类中实现与父类相同的功能,但采用不同的算法或公式
例如,在一个公司中,有普通员工(Employees)及管理者(Magagers)两类人员,Magager类是Employee类的子类
假设普通员工按小时来支付工资,管