首页 > 代码库 > 抽象类和接口
抽象类和接口
抽象类
为什么要引用抽象类这种类:父类中有许多的方法没有具体内容;而且子类中重写父类的方法如果写错,不会提示错误;所有我们引用抽象类来对子类加以限制,同时将父类中没有具 体方法的方法,定义为抽象,可以更加简洁。不需要再用{}来表示方法。
抽象类和抽象方法:不知道具体内容的类和方法
抽象类的定义:abstract class 类名{}
抽象方法的定义:abstract 返回类型 方法名(形参);
怎么引用抽象类:抽象类不能被直接new,但是可以调用它的派生类----当抽象类有自己的派生类时可以直接调用派生类来实现调用抽象类;当没有派生类时,需要自己写一个派生自这 个抽象类的派生类,来变相调用这个抽象类。
注意:抽象类不能被直接new出来;抽象方法没有函数体;抽象类中可以没有抽象方法,但是有抽象方法的类必定是抽象类;抽象类中可以包含成员变量、抽象方法、非抽象方法;抽 象类的派生类可以不实现抽象方法,但是引用的类必须要注明是抽象类。
接口
接口可以理解为就是一个独特的抽象类,他只有常量和抽象方法
定义方法: interface 接口名 [extends 父接口列表]{
final 类型 常量名=值;
public void 方法名(形参);
}
接口的实现:
[abstract] class 类名 extends 父类 implements 接口列表{} //[]代表可以省略不写
定义接口时要遵循接口分离原则,即接口实现的功能尽量的少,最好一个借口实现三个以下的功能;同时接口的接口名尽量是形容对象方法的形容词。
注意:类是单继承,而接口可以多个引用。
this:这个对象
super:父类
final:当修饰成员变量时,相当于常量
当修饰方法时,说明方法是终态方法,不可以进行重写操作
当修饰类时,说明类是终态类(可以理解为最具体,不能再具体),不可以被继承
例如之前做的猫叫同时惊醒了人、老鼠和另一只猫:
新建三个接口分别为人、老鼠、猫,
分别给他们自己的行为方法,然后再建立一个猫叫的类来调用这三个接口
之后用main函数来调用猫叫函数 实现猫叫惊醒了人、老鼠和另一只猫
抽象类和接口