4.1继承
对象共同属性和特征,抽取出来-----类
类之间的共同属性和方法,抽取出来-----基类/父类
例如:
猫类,狗类,共同属性和方法----宠物类
设计实现父类--宠物类
子类继承父类
1、重写
- 前提:
继承关系,父类和子类
在子类中,如果父类的方法不适用,子类就会重写父类方法。
- 重写的方法
子类和父类,返回类型、方法名,参数都一致
方法的访问级别可以不一致,子类的访问级别不小于父类的访问级别
- 子类对象调用重写的方法
默认调用子类重写之后的方法
- 区别重载和重写
重写---方法名同
重载---方法名同
同名方法的位置不同
重载--同名的方法再同一个类中。
方法名相同,参数个数或类型不同
重写--同名方法在2个类中,一个在父类,一个在子类
访问级别可以不一样,其他的都相同(返回类型,方法名,参数)
2、构造方法
new 对象,就会调用构造方法。
继承关系下,子类对象创建时,先调用父类的构造方法再调用子类自己的构造方法
3、Java继承关系---单继承
一个类只能有一个父类,一个父类可以有多个子类。
所有的类直接或间接继承一个最终的父类,Object类
toString方法
子类继承父类,继承父类的成员(方法和属性)。父类的私有成员,private,只能在本类中使用。
子类不能操作父类的私有成员。
4、super关键字
- this关键字
指代当前对象
this.属性
this.方法
this()构造方法-----必须放在构造方法中,必须放第一条语句
- super
指代父类对象。
surper.属性
super.方法
super()父类的构造方法---必须放在构造方法中,必须放第一条语句
5、final关键字
最终的
- final 变量----- 值不再变化,常量
- final 方法----方法就不能改变。继承关系中,子类不可以重写方法
- final 类-----类不能改变。不能有子类。
4.2 抽象类
特殊的类
- abstract 类
类不能实例化,不能new对象。
- abstract 方法
抽象方法。方法没实现(缺乏一些条件,导致无法实现)。
abstract 方法();
The abstract method eat in type Pet can only be defined by an abstract class
- 包含有抽象方法的类,必须是抽象类
包含有抽象方法的类,这个抽象类如果有子类,子类也是抽象类,除非子类实现了这个抽象方法
- 抽象类不是必须有抽象方法
4.3 接口
Java框架---实现接口
特殊的类,特殊的抽象类
接口中,
-
所有的方法都是抽象方法,默认方法,静态方法;
-
所有的属性都是静态常量。
1、语法
interface 关键字
implements 继承关系的关键字
接口的继承---接口的实现。
2、实现
接口可以多实现
一个子类继承一个父类但是可以实现多个接口。
要求implements放在extends后面。
class Person{}
interface Work{}
interface Play{}
class Teacher extends Person implements Work,Play{}
接口可以多继承
interface Work{}
interface Play{}
interface HOPEWork extends Play,Work{}
4.4 多态
一个对象的多种形态。
创建对象:
类型 对象名=new 类型();
- 声明对象的类型
- 创建某个类型的对象
多态的对象
声明的类型是父类类型和创建的对象类型是子类类型。
class Pet{}
class Dog extends Pet{}
//多态对象
Pet ddd=new Dog();
例:实验室助理---点名,登分
class 学生{}
class 研究生 extends 学生{}
class 博士 extends 研究生{}
招聘启示:学生
声明: 学生 助理;
招聘回来:创建对象
创建: 研究生
学生 助理=new 研究生();
研究生 答疑助教=new 学生();//类型不匹配
多态的应用
-
多态对象使用的时候,按照new的实际类型使用
USB deviceA=new USBLight(); //多态对象使用的时候,按照new的实际类型使用 deviceA.inUse();//方法被重写,子类对象调用的重写后的方法。
-
语法检测的时候,按照对象的声明类型
//语法检测的时候,按照对象的声明类型 //要使用实际类型中有的方法,需要强制类型转换 //强制类型转换的前提,对象的实际类型确实是转换成了对象的实际类型 //运算,判断对象是否是所属类型 if(deviceA instanceof USBLight){ ((USBLight)deviceA).addLight();//调用子类特有的增加亮度的方法 }
-
对象 instanceof 类 //判断对象是否是所属类型
4.5匿名对象和匿名类
匿名对象--没有名字的对象
匿名类--没有名字的类
4.6异常
程序执行的时候,正常的情况是从开始main方法入口,执行到最后一条语句结束。
程序出现问题,程序就会终止运行。
解决问题
-
Error错误--严重问题,不做处理
-
Exception异常--一般问题。写代码针对问题进行处理,让程序能继续运行后面的代码
上课-休息-上课-休息
发烧----------------终止,处理吃退烧药
四年,毕业
处理方案
-
try catch捕获异常并处理
-
throws声明抛出异常,上一级进行捕获处理
英语4级,监考验证身份,发卷,收卷。
举手,拉窗帘----try catch
举手,上厕所----监考老师不能处理,向上一级请示(将异常交到上一级处理)