继承
继承简介
概念:
java中的继承,是使用extends关键字在两个类之间建立的一种关系;
写法:
class Fu{}
class Zi extends Fu{}//表示Zi类继承Fu类;
在继承关系中,被其他类继承的类,叫做父类(超类),如本例中的Fu类;
继承其他类的类,叫做子类(派生类),如本例中的Zi类;
作用:
继承中子类可以直接拥有父类的成员;
继承作用
此时发现两个类中存在大量重复代码,导致代码的复用性差。
要解决这种自身所有的属性和行为重复的问题,应该使用继承; 使用继承可以提高代码的复用性;
使用继承可以在两个类中建立一种关系;
使用注意:
1、继承中,父类的私有成员不能被子类继承;
2、继承中的两个类,应该有关系;
只有子类描述的事物 ,有父类描述的事物的特例的时候,才可以使用继承;
虽然在语法上,可以使用extends关键字在任意两个类之间建立继承关系,但是在开发中,只能是二者之间具有 “是” 的关系的时候才使用继承;
如果两个类不具有这种“是”的关系,那么就应该找他们共同的父类,然后将共同的信息放到共同的父类中,然后让两个类分别继承父类;
如:
鱼 和 苹果 , 不具有 “是” 的关系,但是有共同的父类,都属于食物,所以可以建立一个食物类,然后让他们分别继承食物类;
java类的继承特点
单一继承
就是一个类只能直接继承一个父类;
如果可以继承两个父类,那么当这两个父类中都具有共同的属性或行为时,在子类中调用,就不清楚到底会调用哪个(调用的不确定性)
多重继承
java中继承中,父类可以再继承其他类,叫做多重继承;
一个类只能直接继承一个父类,但是可以有多个子类;
一个类的父类还可以继承父类;
继承中的成员方法
子类直接拥有父类非私有成员方法
子类中可以定义和父类中同样的成员方法,直接调用的是子类中定义的函数;
如果子类中没有定义和父类中一样的成员变量和函数,直接调用,使用的是父类中定义的成员;
如果子类中定义了和父类中一样的成员变量和函数,直接调用,使用都是子类中定义的成员;
此时要使用父中定义的成员,需要通过super关键字调用;调用的格式是:
super.成员变量;
super.成员函数名(参数);