一. 继承
继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或者子类继承父类的方法,使得子类具有父类的相同行为。
Java中通过extends关键字声明A类从B类继承(class A extends class B)。
Java 不支持多继承,但支持多重继承。
子类拥有父类的非private的属性和方法。
子类可以对父类扩展。
子类可以用自己的方式实现父类的方法。
extends单继承 ,implements可以具有多继承的特性。
super:对父类成员访问,引用当前对象父类。
this:指向自己的引用。
final关键字声明类不可以继承。
子类不继承父类构造器,只能调用。
如果父类的构造器带有参数,子类的构造器必须显式用super调用父类构造器配以适当的参数列表。
如果父类构造器没有参数,则子类构造器不需要使用super调用,系统会自动调用父类无参构造器。
二.重写(Override)
子类对父类的的可访问的方法的实现过程重新编写,返回值和形参不能变。也就是说子类根据需要实现父类的方法。
class A{
public void eat(){
System.out.println("A吃");
}
}
class B extends A{
public void eat(){
System.out.println("B吃");
}
public void play(){
System.out.println("B玩耍");
}
}
public class Test(){
public static void main(String[] args){
A a = new A(); //A对象实例化
A b = new B(); //B对象实例化
a.eat(); //调用A类方法
b.eat(); //调用B类方法
b.play(); //出现编译错误,b的引用类型A类没有play方法。
}
}
重写的规则:
1.参数列表必须完全相同。
2.返回类型与被重写的可以不同,但必须由父类的返回值派生出来。
3.访问的权限不能比父类被重写的方法的访问权限低。
4.父类成员方法只能被子类重写。
5.final声明的方法不能被重写。static声明的方法不能被重写,但能被重新声明。
6.子类父类处于同一包中,子类可重写父类所有方法,除了final和private的声明的方法。
7.子类和父类不处于同一包中,子类只能重写父类由public 和protected声明的非final方法。
8.重写不能抛出新异常。
9.构造方法不能被重写。
10.只有继承一个类才能重写此类。
三.重载(Overload)
重载只能处于一个类,方法相同,参数不同,返回类型可同可不同。
被重载的方法必须更改参数列表(参数个数或类型)
被重载的方法可以更改返回类型
被重载的方法可以更改访问修饰符
被重载的方法可以声明新的异常