(1)、子类继承父类的所有属性和方法,但是私有属性和方法不能直接使用,可以通过公共方法访问
(2)、子类必须首先调用父类的无参构造器,且调用一直追溯到Object类的构造器,原因是子类的构造器第一行默认是super(),可以省略,且super必须放在第一行,且只能在构造器中使用
(3)、如果父类没有无参构造器,则子类的构造器第一行必须用super调用父类的一个构造器
(4)、子类只能直接继承一个父类
(5)、不能滥用继承,必须满足is-a的关系,一般是认为父类是子类的抽象提取
(6)、(重点)子类与父类可以拥有相同的属性名和方法名,在内存栈中同时存在子类和父类的相同属性名和方法名,如果子类实例调用某个属性和方法,先从子类找,如果有且可以访问,就调用这个,如果不行就向上父类依次寻找,直到找到为止,如果寻找途中找到该属性名或者方法名,但是不能访问,则停止寻找,直接报错(这里子类的属性没有覆盖父类的属性)
class GrandPa{
String name = "大头爷爷";
String hobby = "旅游";
}
class Father extends GrandPa{
String name = "大头爸爸";
int age = 39;
}
class Son extends Father{
String name = "大头儿子";
}
Son son = new Son();
//son.name = "大头儿子";
//son.age = "39";
//son.hobby = "旅游",如果String hobby添加了private,则直接报错