继承是java面向对象的三大特征之一,它的关键字是extend。这个单词的意思其实是“扩展”,由此我们可以把继承理解为一个类去扩展另一个类,其中被扩展的类称为父类,实现扩展的类叫做子类。在继承关系中子类会得到父类的所有参数或是方法,此外子类还可以扩展自己的参数或方法。
比如水果类和苹果类,苹果类扩展了水果类,因此水果类是父类,苹果类是子类。它的格式是这样的:
public class friut (){
System.out.println("这是一个水果类");
}
public class apple extends friut(){
System.out.pritnln("这是一个苹果类");
}
public class apple extend friut1,friut2....{
} //是错误的
说到继承有一个东西不得不提到,那就是重写,什么是重写?我们来看这样一个场景:
有一个bird类,其中定义了一个会飞的方法,再创建一个hen类去继承bird类,我们都知道母鸡属于鸟类,但是鸟是会飞的,而母鸡不会飞,但是又继承了bird类中的会飞这个方法,显然是不行的,此时我们就需要改写bird类中的方法。
public class bird {
public void fly(){
System.out.println("鸟是会飞的");
}
}
public void fly(){ //重写父类fly方法
System.out.println("母鸡是不会飞的");
}
public void fly1(){
super.fly(); //用super调用父类fly方法
}
public static void main(String[] args) {
hen he=new hen();
he.fly();
he.fly1();
}
}
上面这个例子就用到了重写,子类hen 类重写了父类bird类中fly方法,可以知道子类中的fly方法被覆盖了。
重写的时候我们需要注意一下三点:
(1).重写的方法必须和原方法的方法名相同,参型列表相同(包括参数名,顺序和类型)
(2).子类的访问访问权限应该比父类的大
(3).如果父类中的某个方法是pirvate的,那么子类不能重写此方法
重写中还有一个super关键字很重要,super 的作用是直接调用父类中的方法。在上面我们说到父类中的方法在子类中被重写了,那么就无法访问父类中的原方法,但有些情况下需要用到父类中原方法时就可以用super来调用。 在上面的例子中母鸡是不会飞的,但是有一天它突然变异了它会飞了,此时我们又改写了fly方法,这种情况下还是需要调用父类中fly方法。
注:参考资料疯狂java讲义(电子工业出版社)