继承
程序中的继承
在程序中,也能出现继承的关系,让一个类去继承另一个类.
比如 A类继承B类
-
出现继承的关系
-
A类是B类的子类,或者称为派生类
-
B类是A类的父类,或者称为超类,基类
-
子类可以直接拥有父类的成员(不是全部)
继承的语法格式
继承使用关键字 extends,表示继承的意思
继承的好处
-
减少代码量
-
复用性提高
-
继承的存在,导致了面向对象的最后一个特征多态
继承有弊端: 类和类之间的紧密性更强.(扩展性越差)
继承后成员特点
继承后成员变量特点
子类和父类中的成员变量同名
-
调用的使用: 子类自己有,使用自己的,子类没有,使用父类
super关键字
super关键字是超级的意思,在子类中调用父类的成员,使用此关键字
super.变量 调用父的成员变量
super.方法() 调用的是父类的成员方法
this表示当前对象,super表示父类在内存中的存储空间,不是对象
public class Fu{
String s = "父类";
}
public class Zi extends Fu {
String s = "子类";
public void print(){
String s = "方法";
System.out.println(s); //方法
System.out.println(this.s); //子类
System.out.println(super.s); //父类
}
}
继承后成员方法特点
方法重写override:子类父类出现了一模一样的方法,称为子类重写了父类的方法.又称为覆盖或者复写.
调用子类重写的方法,假如子类没有重写,调用父类的方法
方法重写的意义
继承本质是扩展的意思,延伸的意思,依靠方法的重写来实现
方法重写小问题
方法重写需要考虑权限的.保证子类方法的权限要大于或者等于父类方法权限
-
如果父类的方法权限是private, 子类不知道该方法的存在,没有继承的说法
继承后构造方法特点
构造方法特点: 子类的构造方法中,第一行存在隐式代码 (写不写都存在),代码是super(); 调用父类的无参数构造方法.
-
子类的构造方法,无论重载多少个,第一行肯定也是super();
-
父类没有无参数构造方法,子类的构造方法中,super(传递参数)
-
父类中存在多个构造方法,子类的构造方法只要调用到其中的一个即可
继承特点
单继承
一个类只能继承一个类,不允许同时继承多个类。单继承存在局限性,解决局限性问题,接口的概念
多层继承
A类可以同是拥有B和C的成员, B只能拥有C的成员
A类中super调用的是B类成员,如果B类没有成员,调用C成员
Object类是java中的皇帝,所有的类都是Object子类