目录
抽象类:(abstract)
public abstract class pet{
}
概念
在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。
特性
- 抽象类不能被实例化(不能被创建对象)
- 抽象类中有构造方法,但不能被创建对象,只能由子类的super语句来调用。
- 抽象类可以包含main方法,他只是一个静态方法
- 抽象类必须被继承,才能被使用
- 一个类只能继承一个抽象类,而一个类可以实现多个接口
抽象类与普通类,抽象方法与普通方法
抽象类不能被实例化(不能被创建对象) 普通类可以被实例化
抽象方法无方法体 普通方法有方法体
抽象类中可以有抽象方法也可以有普通方法
普通类中不能有抽象方法
抽象类关键字abstract不可以和那些关键字共存?
private:相互矛盾
final:无法重写
static:一旦加上就可以通过类名直接访问,抽象方法无方法体,没有意义
方法重写
方法名,参数类型,返回值必须一致(外壳不变,核心重写!)
重写与重载
这俩无任何关系。
方法重载:一个类中,方法名相同,参数列表不同(类型,数量,顺序),与返回值和修饰符无关
方法重写:子类中的方法名与父类中的方法名相同,参数列表相同,返回值类型相同,为重写。
方法重载是一个类的多态性表现,而方法重写是子类与父类的一种多态性表现
接口(interface)
概念
一个抽象类型是抽象方法的集合。
接口不是类
接口的实现:implements
作用
提高代码的可拓展性和后期的维护性
命名规范
以I开头,以包名结尾
接口和类的相似点
- 一个接口可以有多个方法
- 接口的文件保存在.java结尾的文件中,文件名使用接口名
- 接口的字节码文件保存在.class结尾的文件中
- 接口相应的字节码文件必须在与包名称相匹配的目录结构中
接口与类的区别
- 接口不能实例化对象
- 接口中没有构造方法
- 接口中所有的方法必须是抽象方法
- 接口只能声明静态常量,不能声明成员变量
- 接口可以多实现
接口与抽象类的区别
- 抽象类中的方法可以有方法体,就是能实现方法的具体功能,但接口中的方法不行,接口没有方法体
- 抽象类中的成员变量可以是各种类型的,而接口中只能是静态常量
- 接口中不能含有静态代码块以及静态方法(用 static 修饰的方法),而抽象类是可以有静态代码块和静态方法
- 一个类只能继承一个抽象类,一个类可以实现多个接口。