# 抽象 abstract

本文作者:阳九五 (opens new window)

本站地址:https://blog.56321654.xyz (opens new window)

abstract 关键字用于定义抽象类和抽象成员(方法、属性、运算符等)。

抽象类是不能被实例化的类,它通常用作基类,为派生类提供模板。抽象类可以包含抽象成员,也可以包含具体实现的成员。

# 定义

普通类前加 abstract 就是抽象类

abstract class Person {
    String name = 'Young Yang';
    void printName() {
        print(name);
    }
}
1
2
3
4
5
6

# 不能直接 new 实例化

var p = Person();
p.printName();

Abstract classes can't be instantiated.
Try creating an instance of a concrete subtype.
1
2
3
4
5

# 继承方式使用

定义

class Father extends Person {

}

class Student extends Person {
    void printName(){
        print('Student: $name');
    }
}
1
2
3
4
5
6
7
8
9

实例

var F = Father();
F.printName();

var S = Student();
S.printName();

Young Yang
Student: Young Yang
1
2
3
4
5
6
7
8

# 接口方式使用

定义

class Teacher implements Person {
    
    String name;

    Teacher(this.name);

    
    void printName() {
        print('Teacher: $name');
    }
}
1
2
3
4
5
6
7
8
9
10
11

实例

var T = Teacher("Yang Yang");
T.printName();

Teacher: Yang Yang
1
2
3
4

# 继承和接口的区别

  • 如果要复用抽象类里面的方法,并且要用抽象方法约束子类的话,就用extends继承抽象类。
  • 如果只是把抽象类当做标准的话,就用implements实现抽象类。
最近更新: 8/6/2025, 2:39:35 PM