继承
***********************************************************************************************************
基本概念:
类与类的关系。 -----------------is a
把具有相同属性或行为的类进行抽取,设计为父类。
子类通过 继承就可以自动具备来自父类的属性和行为。
基类------父类
派生类----子类 隔层父类---------超类
优点: 1.代码的可重用性。
2.扩展性增加
3.设计程序变得简单
4.子类继承父类的属性和行为
Java是单继承: 一个子类只能继承一个父类------类的层次性更清晰。
多继承:极大的提高了设计的丰富度(c++)
***********************************************************************************************************
Object类是所有包括数组的超类(了解并掌握他的方法)
在引用数据类型中,变量用 == 比较的时候,不是比较对象里面的内容是
否相等,而是比较这2个变量是否指向同一个对象。
equals() 来自于Object,比较2个对象的内容是否相同。而现在使用前,
应对equals进行重写,需要判定2个对象在业务上是否相等。
toString() 返回一个对象的字符串描述。
当我们直接对对象进行字符串操作的时,比如直接打印对象。
***********************************************************************************************************
方法的重写:
在继承关系中,子类把在父类中继承的方法重新实现。
1.方法名必须保持一致
2.参数列表必须保持一致
3.返回类型必须一致
4.访问修饰符必须大于或等于父类的访问修饰符
5.子类重写方法不能抛出比父类被重写方法更多的异常
***********************************************************************************************************
finalize() 处理垃圾对象 ----------------GC调用 不考虑重写
final : 1.修饰变量 ,变量变常量
2.修饰方法 ,方法不能被重写
3.修饰类 ,类就不能被继承,则被称为终态类,最终类
finally :
方法中:可选修饰符和访问修饰的位置是可以交换的。
***********************************************************************************************************
继承的内存实现:
是通过内存叠加的方式实现的。
构造方法是不能被子类所继承的,但是也参与了产生子类对象的过程。
2个方面说明:1. 语法:构造方法的名字和类名字一致,父类和子类的
名字是不一样的。
2. 作用:构造方法是产生一个对象的,子类不可能有2
个对象。
也不能被重写。(都不能被继承了,肯定不能被重写了。)
当new子类对象的时候,会先调用父类的构造方法,产生父类的对象部
分,在调用子类构造,在父类对象下面叠加产生子类对象,合为子类对象。
***********************************************************************************************************
this:
1.this.***或者this.***() 表示每个对象本身的this引用。当前对象,可以看本类中的所有属性和方法,可以看到继承与父类的的访问修饰符允许
看到的
2.this()代表调用同一个类的其他构造器。
注意:this()只能放在构造器的第一句。
super:
1.super()调用父类的指定构造,也只能放在构造器的第一句,和this()
不能同时出现。
2.super()有默认,不会写也有(调用父类无参),this()没有默认。
3.super.****** 当前对象的父类对象,访问不到本类定义的任何属性和方法
也可以看到继承父类的属性和方法,也受访问修饰符限制,和this相同。
综上:super可以看到的,this也可以看到。
this看到的 ,super就不一定看的到,所以this比较好。