【Java专题】抽象类和抽象方法

abstract修饰的方法叫做抽象方法,抽象方法没有方法体,只有方法声明。被abstract修饰的类叫做抽象类,抽象类要求子类必须实现抽象类中的抽象方法,否则子类也必须声明为抽象类。

特点

  • 有抽象方法的类必须声明为抽象类
  • 抽象类不能被实例化
  • 抽象类可以有构造器,但不能直接创建对象,可以通过子类来调用抽象类的构造器
  • 抽象类只能被用来继承
  • 抽象方法必须被子类实现

代码示例

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
26
27
28
29
30
31
package study.ghr.pk1;

// 抽象类:包含抽象方法的类,必须声明为abstract
abstract class Person {
// 抽象方法:等待被子类实现
abstract void hello();
}

abstract class Student extends Person {
// 继承抽象类,必须实现抽象方法,否则也必须声明为抽象类
void hello() {}
}

class Tearcher extends Person {
// 继承抽象类,本身不是抽象类,必须实现抽象方法
public void hello() {
System.out.println("Hello, I'm a teacher");
}
}


public class TestAbstract {
public static void main(String[] args) {
// Person p = new Person(); // 抽象类不能实例化,编译报错
Student s = new Student() {}; // 匿名子类,必须实现抽象方法
s.hello(); // 什么都不输出

Tearcher t = new Tearcher();
t.hello(); // Hello, I'm a teacher
}
}