抽象类与接口
一、抽象类
1.抽象方法
如果在一个类中,需要有这个方法,但不打算在此处给出这个方法如何具体实现,则其应被定义为抽象方法,由abstract修饰符修饰。
如:
public abstract void work();
注意:抽象方法只能存在于抽象类中。
2. 抽象类定义
类中有
抽象方法,则这个类应该定义为抽象类,由abstract修饰符修饰。
抽象类只能被继承
,不能
通过抽象类去创建对象
(不能被实例化),与final类是两个极端。
final修饰符修饰的类,不可被继承。
3. 如何创建抽象类
与继承相同,既可以在创建类时选择下图标记部分。也可以在创建好类以后手动在class前写上abstract。
4. 继承抽象类的子类的特点
如果一个子类继承了抽象类, 那么它应该实现抽象类具有的所有
抽象方法。
如果子类没有实现
其父类的所有
抽象方法,那他也应该定义为抽象类。
二、接口
1. 接口的定义
如果一个类中所有方法都是抽象方法,则这个类可以
定义为接口。可以说,接口是几个纯粹的抽象类。
2. 如何创建接口
同样的,既可以在创建时直接选择interface,也可以用interface代替普通类中的class来将一个类修改为接口。
定义好的接口:
package com.daw.test4;
public interface Car {
}
3. 接口的特点
1)接口中方法的public static可以省略
//非接口中的方法定义应为(static依照需要可加可不加)
public static void work();
//接口中方法可以省略为
void work();
2)类只能继承一个类,但可以引用多个接口
注意:
- 类不能继承(extend)接口,而是引用接口(implements),但具体使用与继承类并无不同。
public class Student implements Learn, Play{
//Student同时引用了两个接口
...
//内容省略
}
- 类可以既继承类,又引用接口
public class Student extends Person implements Learn, Play{
//Student继承了Person类,同时引用了两个接口
...
//内容省略
}
3)接口的成员变量
默认为public static final,必须赋初值,不能被修改。(一般不在接口中定义成员变量。)