has a 有一个
use a 用一个
use a 用一个
继承
类与类之间的关系—is a(表达类与类之间的关系,箭头指向父类)
把具有相同属性与行为的类进行抽取,设计为父类,子类通过继承会自动具备来自于父类的属性和行为。
可以通过扩展一个已有的类,并继承该类的属性和行为,来创建一个新的类,这种方式称为继承。
继承的优点
代码的可用性
子类可以扩展父类的属性和方法
Java的继承(单继承)
某些OOP语言(例如c++)运行子类有多个父类
但在Java中这是不允许的。在Java中,一个类只能有一个父类。
主要是为了类层次的清晰。
代码的可用性
子类可以扩展父类的属性和方法
Java的继承(单继承)
某些OOP语言(例如c++)运行子类有多个父类
但在Java中这是不允许的。在Java中,一个类只能有一个父类。
主要是为了类层次的清晰。
方法的重写
在继承关系当中,子类把继承父类的方法给重新实现一次
要求
方法名必须保持一致
参数列表必须保持一致
返回类型必须保持一致
访问修饰符必须大于等于父类方法的访问修饰符
子类重写方法不能抛出比父类更多的异常
在继承关系当中,子类把继承父类的方法给重新实现一次
要求
方法名必须保持一致
参数列表必须保持一致
返回类型必须保持一致
访问修饰符必须大于等于父类方法的访问修饰符
子类重写方法不能抛出比父类更多的异常
引用类型的强转必须有继承关系
final关键字
修饰变量 变成常量
修饰类 类就不能被继承 被称之为:终态类,最终类
修饰方法 方法就不能被重写
修饰变量 变成常量
修饰类 类就不能被继承 被称之为:终态类,最终类
修饰方法 方法就不能被重写
this关键字(更多使用this)
1.this.***或this.***() 当前对象
代表每个对象本身的this引用
每个对象都有一个隐含的this变量,他可以访问类的所有信息
this代表对当前类的对象的引用,有二义性时我们必须使用this。
1.this.***或this.***() 当前对象
代表每个对象本身的this引用
每个对象都有一个隐含的this变量,他可以访问类的所有信息
this代表对当前类的对象的引用,有二义性时我们必须使用this。
this.可以看到本类的所有属性和方法,
可以看到继承父类的 访问修饰符为public的属性和方法
2.this()代表调用同一个类中的其他构造器(※只能放在构造方法的第一句)
3.this和super不能同时出现
可以看到继承父类的 访问修饰符为public的属性和方法
2.this()代表调用同一个类中的其他构造器(※只能放在构造方法的第一句)
3.this和super不能同时出现
4.没有默认
super关键字(特例:当我们要调用被重写方法在父类中的实现(也就是重写前的效果),用super.)
1.super()代表调用父类的指定构造器(※只能放在构造方法的第一句)
1.super()代表调用父类的指定构造器(※只能放在构造方法的第一句)
2.super.当前对象当中的父类对象部分
访问不到本类定义的任何属性和方法
可以看到继承父类的 访问修饰符为public的属性和方法
3.this和super不能同时出现
访问不到本类定义的任何属性和方法
可以看到继承父类的 访问修饰符为public的属性和方法
3.this和super不能同时出现
4.就算不写也有默认,调用父类无参构造
内存实现,内存的叠加方式
构造方法不能继承为子类,因为构造方法方法名和类名不能相同,也不能重写。
构造方法不能继承为子类,因为构造方法方法名和类名不能相同,也不能重写。
构造方法虽然不会被继承,但是他会参与子类对象创建的过程。
当我们new一个子类对象时,先产生父类构造方法产生父类对象部分
在调用子类构造方法 父类对象部分叠加在子类对象部分上,从而得到一个完整的子类对象
在调用子类构造方法 父类对象部分叠加在子类对象部分上,从而得到一个完整的子类对象
---------------------------------------------------方法、关键字
※object是所有类的根类(基本数据类型没有父类一说,所以基本数据类型不继承Object)
※object是所有类的根类(基本数据类型没有父类一说,所以基本数据类型不继承Object)
.equals
引用数据类型中,对象变量用==号比较,不是比较对象里面的内容是否相等而是比较这两个对象变量是否指向同一个对象
重写后判定两个对象是否在业务上相等
.toString
返回对象的字符串描述
当我们队对象直接进行字符串操作时,比如直接打印对象,或是做字符串拼接,会默认调用该方法
finalize(并非关键字)
销毁对象的方法,由GC自动调用,书写在object下
引用数据类型中,对象变量用==号比较,不是比较对象里面的内容是否相等而是比较这两个对象变量是否指向同一个对象
重写后判定两个对象是否在业务上相等
.toString
返回对象的字符串描述
当我们队对象直接进行字符串操作时,比如直接打印对象,或是做字符串拼接,会默认调用该方法
finalize(并非关键字)
销毁对象的方法,由GC自动调用,书写在object下