继承:
就是在已有类的基础上构建出新的类,新的类称为已有类的子类,子类会自动拥有父类所有的非私有的属性和行为,并且还能扩展自己特有的功能。
继承的特点:
1、java中只支持单继承,不支持多继承
2、支持多层继承(形成继承体系)
继承需注意的问题:
1、子类只能继承父类非私有的成员(成员变量和成员方法)
2、父类的构造方法子类不能继承,但是可以通过super关键字去调用父类的构造
3、继承体现的是一种“is a”的关系(比如波斯猫是猫的一种,猫是动物的一种),千万不要为了部分功能而刻意的去继承
class A{
public void a() {
}
public void b() {
}
}
/*class B {
public void b() {
}
public void c() {
}
}*/
class B extends A {
public void c() {
}
}
就像这时候发现B类中出现了与A类中一样的方法b,就去使用继承的话,那么发现a方法也会被继承过来,但是a有可能并不是你想要的功能。
继承中成员变量的关系:
1、成员变量不同名,正常访问
2、成员变量同名(就近原则),子类的查找顺序为:子类局部范围->子类成员范围->父类成员范围
继承中成员方法的关系:
1、成员方法声明不一样,正常访问
2、成员方法声明一样(方法重写了),子类查找顺序:查找子类->查找父类
继承中构造方法的关系:
1、构造方法不能被继承,可以通过super关键字访问
2、子类默认都会访问父类的空参数构造,原因是子类初始化可能会用到父类数据,子类初始化前要完成对父类数据的初始化,子类每个构造方法的第一条语句都是super();。
继承中的方法重写:
方法重写(override):子类中出现了与父类中方法声明一模一样的方法。
方法重写的应用:当子类需要父类的功能,而子类本身又有自己的特有功能的时候,需要重写父类的功能,这样既拥有的父类的功能,又保持了自身特有的功能。
方法重写的注意事项:
1、子类重写父类方法,访问权限应该大于等于父类权限(最好一致)
2、重写时方法声明应与父类一模一样