定义:
一个新类从现有的类中获得现有类的成员,这个现象叫做继承。
其中新类是现有类的派生类或者子类,现有类是新类的父类和基类
继承的优点:
通过继承可以一层一层的模拟事物从一般到特殊(种属关系),通过创建一个种,再加上属差来模拟现实事物。
这样就使得基类中的代码被子类中重用,提升效率。
每一个子类构造方法的第一条语句都是调用父类的构造方法,如果没写,则是默认调用父类的无参构造方法,因为构造方法只可以运行一次,所以若想调用父类的构造方法只可以写在子类构造方法的第一条语句。
特性:
Java只支持单继承,一个子类最多有一个父类
Super:
super相当于父类的对象,可以使用父类的域和方法,若子类与父类方法名相同,若想在子类中调用父类方法则可用super.方法名。
父类的构造方法(super()实现)只能在子类的构造方法中调用。
子类访问父类的三种方式:
1.在子类内部访问父类成员:
可以直接访问父类非private成员。
2.通过子类对象访问父类成员:
可以直接访问非private成员。
3.通过子类名访问父类成员:
只可以访问父类非private并且是static修饰的成员。
同包继承的权限问题:
当类都在同包内,子类不可以继承父类的私有成员(不论是在子类的内部使用,还是子类外部使用(创建对象使用))。
总结:私有成员不能被继承,但实际上私有成员在物理上被继承,但逻辑上不可以访问,这就引出一个问题,如果私有变量很多而又乱继承的话,浪费内存空间。