抽象方法

  • 只有声明,但没有具体内容的方法
  • 抽象方法不能直接被调用,需要重写

声明

  • 与普通方法声明相同,加abstract关键字

    abstract 作用域 返回类型 方法名();

抽象类

  • 包含抽象方法的类就是抽象类
  • 抽象类不能被直接使用,不能被实例化

作用

  1. 用于告诉子类可以执行哪些操作,但没有规定具体的操作内容。
  2. 抽象类必须被继承,在子类中重写抽象方法。
  3. (面向抽象编程)

声明

声明
1
2
3
abstract class 类名{

}

继承

  • 抽象类可以继承自抽象类

接口

  • 一种特殊的类,只包含全局常量和public的抽象方法

作用

  1. 接口可多继承(类只能单继承)
  2. 确定一个类的功能,面向接口编程

声明

声明
1
2
3
4
interface 接口名{
全局常量
抽象方法
}
  • 因为接口的所有方法都是public的抽象方法,因此可省略public abstract关键字

继承

  1. 接口可继承接口,不可继承抽象类和普通类
  2. 继承接口需使用implements关键字,并可继承多个接口
  3. 普通类继承接口时,必须重写接口的所有方法
e.g.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
//声明接口A,包含两个抽象方法:print、area
interface A{
void print();
float area(double r);
}
//声明接口B,包含抽象方法len
interface B{
float len(double w, double h)
}
//创建普通类,并继承自接口A和B
class Test implements A,B{
//必须重写接口的所有方法
@Override
void print(){

}
@Override
float area(double r){
return 3.14*r*r;
}
@override
float len(double w, double h){
return w*h*2;
}
}