继承就是一种由已有的类创建新类的机制,是指在已有类的基础上扩展功能。继承中分为子类和父类
类可以有两种重要的成员:成员变量和方法。子类的成员中有一部分是子类自己声明定义的,另一部分是从它的父类继承的。
1.所谓子类继承父类的成员变量作为自己的一个成员变量,就好象它们是在子类中直接声明一样,可以被子类中自己声明的任何实例方法操作.
2. 所谓子类继承父类的方法作为子类中的一个方法,就象它们是在子类中直接声明一样,可以被子类中自己声明的任何实例方法调用。
(1) Java只支持单一继承,也就是只有一个父类,利用extends 关键字继承;
class A{ }
class B{ }
class C extends A,B{ // 错误的,因为同时继承了两个父类 }
(2)Java中允许多层继承
class A{ }
class B extends A{ }
class C extends B{ }
(3)当子类拥有和父类相同的方法定义(即返回类型、方法名、参数列表完全相同时,仅方法体不一样),称之为方法重写(OverRide);
1对于子类创建的一个对象,如果子类重写了父类的方法,则运行时系统调用子类重写的方法,如果子类继承了父类的方法(未重写),那么子类创建的对象也可以调用这个方法,只不过方法产生的行为和父类的相同而已。
2重写父类方法时不可以降低方法的访问权限
3如果重写了父类的方法后使用父类的被重写方法,可以在子类的方法中使用super.被重写方法();
4子类不继承父类的构造方法
5子类的构造方法必须调用父类的构造方法
6如果子类的构造方法中没有显式地调用父类构造方法,也没有使用this关键字调用重载的其它构造方法,则系统默认调用父类无参数的构造方法,相当于省略了super();语句
7如果子类构造方法中既未显式调用父类构造方法,而父类中只有有参数的构造方法,没有无参的构造方法,则编译出错
8在子类的构造方法中可使用语句super(argument_list) 调用父类的构造方法,但必须作为构造方法的第一条句。
9子类在实例化时实际上先调用父类的构造方法,后调用的子类的构造方法。
|
|