继承 inheritance
概念:子类中包含了父类成员,并可以在子类中使用的过程
1.Java中只支持单继承,不允许多继承,不允许有多个直接父类
Ojbect类的9个方法
clone():复制对象
getClass():返回的对象的大Class对象
equals();比较两个对象是否相等
finalize();垃圾回收被调用的方法
toString();得到当前对象的字符串表示形式
hasCode();得到对象的哈希码
notify(); 唤醒线程 notifyAll();唤醒所有线程
wat();让线程等待
子类父类不在同一个包下
private 和 default 都不能被继承
Overload重载,方法的重载:同一个类内部方法名形同,参数列表不同
Override 重写,存在继承,子类重写父类的方法,访问权限需要≥父类的
返回类型如果是基本数据类型,必须一致,如果是引用数据类型
,那重写的返回类型,可以是父类返回类型的子类型
子类抛出异常类型,必须≤父类
静态方法可以被子类的继承,但是不能被子类重写
super();关键字
作用:1.子类和父类的变量,有语义上的冲突时,需要用super调用父类的变量(方法,变量)
2. 每个子类的构造方法的第一句,都必须 显示或者隐式通过super调用父类的构造方法
3.隐式调用只能调用,无参的构造方法
4.如果父类没有无参的构造方法,那么必须使用super调用父类的构造方法
5.通过这样的机制保证了父类的构造方法先执行完毕,然后执行子类的构造方法
6.通过super 来访问父类的构造方法,执行的意义在于,对父类实例成员的初始化
this和super并不冲突,因为当前构造方法没有调用super()其他构造方法必然有,第一句必然是super
那这个构造方法调用了那个构造方法,也就是说这个构造方法的第一句也必然是执行父类的构造方法
生成子类对象的过程描述:
1:类加载,按照整个子类继承的体系,从上到下,从最上层的父类,到最底层的子类,
进行类加载。父类加载——父类静态成员初始化,父类静态块
最后加载子类,对子类中的静态成员初始化,执行子类的静态块
2:先对最上层的父类的实例成员进行空间分配默认初始化,声明处的赋值,构造快,构造法
3:最后对子类的实例成员分配空间,默认初始化,声明赋值,构造快,构造方法
多态 polymorphism
多态是 父类的引用指向了子类的对象,并可以在运行期根据对象的实际的类型
执行对应类型的方法 的功能
多态形成的必要条件:
1.继承 2.父类引用,指向子类对象,子类重写父类的方法