一.类的继承
Java语言每个类只能继承一个父类。
extends——继承
父类 和普通类写法相同
public class 父类类名{
}
子类 需要继承父类
public class 子类类名 extends 父类类名{
}
所有类的构造方法第一行都有一个隐藏的“super();”
作用是在执行该构造方法之前调用其父类的构造方法。
【例7.2】在电话类基础上衍生出手机类(分三个文件书写)
代码:
结果:
二.Object类
Object类是比较特殊的类,它是所有类的父类,是Java类层中最高层类。
方法的重写:返回参数相同,方法名相同,传入参数相同,方法体不同。
1.getClass()方法
是Object类定义的方法,它会返回对象执行时的Class实例,然后使用此实例调用getName()方法可以取得类的名称。
语法:getClass().getname();
可以将getClass()方法与toString()方法联用。
2.toString()方法
它的功能是将一个对象返回为字符串形式,它会返回一个String实例。
在实际的应用中通常重写toString()方法,为对象提供一个特定的输出模式。当这个类转换为字符串或与字符串连接时,将自动调用重写的toString()方法。
【例7.3】让学生自我介绍
代码:
结果:
3.equals()方法
“==”运算符与equals()方法是两种比较对象的方法。
两者的区别在于:“==”比较的是两个对象引用内存地址是否相同,而equals()方法比较的是两个对象的实际内容。
【例7.4】根据身份证号判断是否为同一人
代码:
结果:
三.对象类型的转换
1.向上转型
将子类对象赋值给父类引用。
通过自动类型转换。
例:Animal a = new Dog();
2.向下转型
将父类对象赋值给父类引用。
需要进行强制类型转换。
例:Dog a = (Dog) new Animal();
四.方法的重载
方法名相同,参数不同。
区分:子类重写父类的方法——返回参数相同,方法名相同,传入参数相同,只有方法体不同。
【例7.8】编写不同形式的加法运算方法
代码:
结果:
在谈到参数个数可以确定两个方法是否具有重载关系时,会想到定义不定长参数方法。
不定长参数语法:返回值 方法名(参数数据类型...参数名称)
【例7.9】使用不定长参数重载加法运算方法
代码:
结果:
五.final关键字
final修饰变量——不可以被修改(常量)
final修饰方法——不可以被重写
final修饰类——不可以被继承
【例7.11】使用final关键字为电视机上儿童锁
代码:
结果:
报错:不能覆盖Dad中的final方法
因为打开电视这个方法是由final修饰的,子类无法重写。所以Baby想要打开电视,就只能找爸爸来打开了。
六.使用instanceof关键字判断对象类型
对象名 instanceof 类名
判断该对象是否属于该类或其子类
【例7.7】分析几何图形之间的继承关系
代码:
结果:
报错:条件操作数类型Quadrangle和Circular不兼容
因为四边形类与圆形类没有继承关系,因此两者不能使用instanceof关键字进行比较,否则会发生“不兼容”错误。
若删除或注释掉这段代码,运行结果如下:
七.多态
利用多态可以使程序具有良好的扩展性,并可以对所有类对象进行通用的处理。
【例7.12】万能的绘图方法
代码:
结果:
感谢观看!
————————————————
版权声明:本文为CSDN博主「OYFYO」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/OYFYO/article/details/129836075