继承
一、继承的特点
- Java只支持单继承
单继承
class A(){}
class B extends A (){}
多继承
class A(){}
class B extends A (){} class C extends A (){}
class D extends B (){} class D extends C (){}
单继承、多继承优缺点
①单继承
优点:提高了代码的复用性,让类与类之间产生了关系,为多太提供了前提条件。java是通过实现多个接口来弥补不能多继承的缺陷的。
缺点:单继承为单向继承,只能拿到父类单向的内容,复用性低。
②多继承
优点:多继承可以拿到更多类的内容,复用性高。
缺点:继承关系混乱及出现菱形缺陷。
ps:菱形缺陷:B和C同时继承于A,D继承与B和C,如果B和C中有同名方法,D就不知道执行哪个类之中继承过来的,照成功能冲突。子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。
子类可以用自己的方式实现父类的方法。
私有的成员变量能被子类继承,但不能被访问(不能.出来)。
二、构造器
构造器不能被继承。
子类的构造器除了承担着初始化子类的新增变量和方法,还要初始化父类自身新增加的变量和方法。当没有为写的类建造构造器的时候,Java会自动创建个默认构造器,但是当编写了构造器后,编写的构造器将会覆盖掉默认的构造器。那么这个时候,如果在继承的子类里面没有显示添加super()函数调用父类里编写的父类构造器,子类的构造器将不能自动找到父类的构造器。子类实例化的时候找不到父类的构造器来初始化父类的东西,就不能完成类实例对象的初始化工作。
三、重写
- 重写前提:子类可以访问父类的方法。
- 注意事项:父类方法访问权限不是private,子类的访问权限一定要大于等于父类的权限,子类可以访问父类被重写的方法。
- @Override:IDE提示加上@Override,系统可以帮你检查重写方法的正确性。
- 重写的方法必须与父类的方法定义完全相同。如果需要改变参数类型,需要把@Override删掉。改变之后就不是覆盖了,而是重载。
- 通过super方法调用父类方法
四、阻止继承
防止类被继承,只需将类修饰成final即可,同样的,如果希望某个类的某一个方法不被覆盖,也只需修饰成final即可。
写完喽!ㄟ(▔,▔)ㄏㄟ(▔,▔)ㄏㄟ(▔,▔)ㄏ
知识重在总结和梳理,只有不断地去学习并运用,才能化为自己的东西。当你能为别人讲明白的时候,说明自己已经掌握了。
欢迎转载,转载请注明出处!
如果有错误的地方,或者有您的见解,还请不啬赐教!
喜欢的话,麻烦点个赞!