啥叫做继承?
简而言之,从已有的类种定义新的类叫做继承。那么新定义的类称为子类(sunclass),被继承的类叫做父类(overclass)。
和离散数学里子父概念不太同,子类并不是父类的一个子集,一个子类通常比它的父 类包含更多的信息和方法。
继承的意义在于可以先定义一个通用的大类,然后在此基础上扩充为一个或一些更加实例化,更有特征性的类。
继承语法
class SunClass extends OverClass{
//子类从父类中继承了 属性/方法/构造方法(不能直接继承)
}
class OverClass {
int c;
}
父类用protected修饰:子类有访问权限
父类用private修饰:子类没有访问权限
子类可以直接使用父类的(非私有)属性行为构造方法
也可以使用自己拥有的属性行为构造方法
甚至有时,需要修改父类中定义的方法,还可以覆盖父类的方法,称为重写
重写时需要注意
1.名称要一致,(函数名都不一样了算个锤子重写)
2.参数列表要一致,否则你这算是重载不是重写
3.返回值类型要相同 或者是父类的返回值类型的子类型
4.子类权限不可以比父类更小
注意:
父类里的内容一定发生在子类对象的初始化之前
父类的父类构造 ->父类构造 ->子类构造
关键字super
明确访问父类的方法和属性
super用来明确调用父类的构造方法
1.如果父类是无参构造方法,通常来说不明确来写super();编译器会添加
2.只有调用父类的有参构造方式时,必须使用super关键字
this vs super
调用其他构造方法 调用父类构造方法
访问本类属性/方法 访问父类属性/方法
代表当前对象 (因为父类对象只是在访问中)