一.继承
继承:1).继承是从已有类,派生新的类,新的类拥有父类的属性和行为.并且还能扩展新的属性和行为.
2).java中只支持单继承,不支持多继承,这样可以让java继承更加简单, 一个类只拥有一个父类. 一个父类可以有多个子类. 易于维护和管理
3).继承是可以传递的. 比如A继承B , B继承c 所以A会有C的属性
4).私有属性和构造方法是不能被继承的.
5).如果一个类没有显示继承其他类,则该类继承Object
Java.lang.object是java提供的根类
Object中的功能,是所有类对象都有的
解决的问题:提高了代码的效率,避免了代码的重写,提高了代码的重用性
二.Super
是什么?
1).保存父类型的特征
2).在继承关系体系中,可以通过super表示父类的数据
能做什么?
1).用于成员/构造方法中,区分父类和子类同名的数据(同名后,子类的优先级是高于父类的,所以想使用父类得话就得用super.xxx)
2).用在子类构造方法中,调用指定的父类构造方法
语法:super(参数); 他必须在子类构造方法的第一行. 如果子类构造方法中没有this 也没有super 则有一个默认的super去调用父类中的无参构造.this和super都必须在第一行所以他们两个不可能同时出现;
3).this和super都不能出现在静态上下文中
不同的地方:this区分局部变量和成员变量; super区分父类和子类中的同名属性
三.Override
1.Override是方法重写/覆写/覆盖. 覆写特指成员方法,除了成员方法都不能被重写
2.何时需要方法重写:当父类的功能满足不了子类的时候
3.覆写的条件
1).有继承关系
2).方法名必须保持一致
3).参数列表必须一致 如果不一致的话就成了方法重载了
4).返回值必须一致
5).不能有更多的异常
6).不能有更低的访问权限
方法重写的意义
功能越来越强,使用范围越来越广,错误越来越少
四.Final
Final修饰符表示最后的,最终的是不可更改的
类:final修饰的类不能被继承
变量:没有默认值,不能二次赋值,必须显示赋值(不能有不赋值的情况)
方法:修饰成员变量,不能被重写
易错点:final修饰的变量不可更改,但是变量指向的值可以更改
五.多态
软件设计的六大原则:
1.单一职责原则:
原则思想:一个方法只做一个事,一个类只负责一个职责,这样当前指责改动,不会对其他程序产生影响
优点:降低类和类之间的耦合度,提高可读性,可维护性,可扩展性,降低可变风险
2.里氏替换原则:
原则思想:能使用父类的地方,就一定可以使用子类.子类可以扩展父类的功能,但是不能更改父类的功能,并且子类还有自己特有的功能.
优点:
3.依赖倒置原则
原则思想:高层次不应该依赖于低层次,都应该以来于抽象
优点:包含多种变化,可以减少需求带来的工作量
4.接口隔离原则
原则思想:类和接口之间应建立在最小接口之上
5.迪米特原则
原则思想:又称最少只是原则.一个对像尽可能的少了解其他对象,一个类中尽量减少对其他类的依赖
6.开闭原则
原则思想:对修改关闭,对扩展开放.尽量通过软件实体,来解决需求的变化,而不是通过修改已有代码来完成的变化
六.什么是多态 父类的引用指向子类
父类引用:使用父类类型,创建的引用类型的变量
指向:同过这个引用可以找到谁
有变量的地方就能发生多态,并多态发生在赋值的时候
2.多态的几种形式:
1).直接多态: 父类类型 变量名=new 子类();
2).形参/实参:参数列表用父类声明, 调用方法传递子类对象
3).返回值多态: 返回值类型是父类类型 但是返回值对象是子类对象
3.多态进行属性调用
1).父类没有的都调用不了(缺点:丢失子类特有的属性)
2).父类有的,子类没有的执行父类
3).父类和子类都有,除了成员方法执行子类,其他全部执行父类(因为只有成员方法可以覆写)