继承:继承是一种由已有的类创建新类的机制。
利用继承,可以先定义一个共有属性的一般类,根据该一般类再定义具有特殊属性的子类,子类继承一般类的属性和行为,并根据需要增加自己的新属性和行为
子类:由继承得到的类成为子类
父类:被继承的类成为父类(超类)
注:java不支持多重继承,既子类只能有一个父类(is-a关系)
子类
子类声明:
class 子类名 extends 父类名{。。。}
Object类是所有类的祖先类,任何类都是object类的子孙类,一个类只能有一个父类,父类可以有零个或多个子类
子类的继承性
子类的成员有一部分是自己声明定义的,有一部分是从父类中继承的,被继承的成员变量可以直接被子类定义的实例方法操作。
子类和父类在同一包中的继承性
如果子类和父类在同一包内,子类继承父类中不是private的成员变量/方法作为自己的成员变量/方法
注:代码中没加限定符“如public”等的,则默认为友好
子类和父类不在同一包中的继承性
不在同一包内只能继承protected和public
protected的进一步说明
一个类A中的protected成员变量和方法可以被他的子孙类继承
在同一个类D类中创建了一个对象,那么该对象总是可以通过“.”运算符访问继承的或自己定义的protected变量/方法
在不同类如在B类中用D创建的对象boy,该对象通过“."运算符访问protected变量或方法的权限如下:
1.对子类D自己声明的protected成员变量/方法,只要B类和D类在同一个包内则可以访问
2.对于子类D从父类继承的protected成员变量/方法,则要看祖先类A类是否跟B类在同一个包中,是则boy对象能访问继承的protected成员变量/方法
instanceof运算符 :判断某一个对象是否是某一个类的对象
instanceofyun'suan的结果为 ture 和false
成员变量的隐藏
当所声明的成员变量的名字和从父类继承来的成员变量的名字相同时(类型可以不同),从父类继承来的成员变量会被隐藏
方法重写(也成为方法覆盖)
子类也可以通过方法重写隐藏已继承的方法:重新定义这个方法,但类型和父类类型一致,并且方法的名字,参数个数,参数的类型和父类的方法完全相同
重写的目的:通过方法重写把父类的状态和行为改编为自己的状态和行为
super关键字
子类一旦隐藏继承的变量/方法,该变量/方法就只归关键字super所有
如果想使用被隐藏的变量or方法,则要使用关键字super,例如:
super.x super.play()
final关键字