oop_day04_继承、重写_20150812
1.继承:
1)作用: 代码的重用
2)通过extends实现继承
3)父类/基类:所有子类所共有的变量和方法
子类/派生类:子类所特有的变量的方法
4)当子类继承父类后,子类具有:
------子类所特有的+父类所共有的
5)一个类只能继承一个父类----单一继承
一个父类可以有多个子类
6)继承具有传递性
7)java规定: 构造子类之前必须先构造父类
子类构造方法的第一句默认有个super()调父类的无参构造
若自己通过super调用父类构造的话,则不再默认提供
super调用父类构造,必须位于子类构造的第1句
2.super:指代当前对象的父类对象
用法:
1)super.成员变量名------访问父类的成员变量
2)super.方法名()-----------调用父类的方法
3)super()---------------------调用父类的构造方法
代码示意:
class Coo{
int a;
Coo(int a){
}
}
class Doo extends Coo{ //什么都不写,报错
/*
//默认代码
Doo(){
super();
}
*/
//解决
Doo(){
super(1);
}
}
3.向上造型:
1)父类型的引用指向子类的对象
2)能点出来什么,看引用的类型
4.方法的重写(override):
1)发生在父子类中,方法名相同,参数列表相同,方法体不同
2)重写方法被调用时,看对象的类型
代码示意:
package oo.day04;
public class OverrideDemo {
public static void main(String[] args) {
OAoo o1 = new OBoo(); //向上造型,父类引用指向子类对象
OAoo o2 = new OCoo();
test(o1);
test(o2);
}
public static void test(OAoo oo){
oo.show();
}
}
class OAoo{
void show(){
System.out.println("Aoo-show()");
}
}
class OBoo extends OAoo {
void show(){
System.out.println("Boo-show()");
}
}
class OCoo extends OAoo {
void show(){
System.out.println("Coo-show()");
}
}
总结:java的三大特性之一:继承