Dart 抽象类
- 抽象类是用
abstract
关键字修饰的类 - 抽象类的作用是充当普通类的模板,约定一些必要的厲性和方法
抽象方法是指没有方法体的方法
- 抽象类中一般都有抽象方法,也可以没有抽象方法
- 普通类中,不能有抽象方法
- 抽象类不能被实例化(不能被 new)
抽象类可以被普通类继承 (extends)
- 如果普通类继承抽象类,必须实现抽象类中所有的抽象方法
抽象类还可以充当接口被实现 (implements)
- 如果把抽象类当做接口实现的话,普通类必须得实现抽象类里面定义的所有属性和方法。
// 1.抽象类必须通过 abstract 关键字声明
// 2.抽象类中,可以有抽象方法,也可以没有抽象方法
abstract class Phone {
//声明抽象方法
void processor(); // 手机的处理器
void camera(); // 手机的摄像头
void info() {
print('我是抽象类中的一个普通方法');
}
}
class Xiaomi extends Phone {
// 普通类继承了抽象类,就必须实现抽象类中所有的抽象方法
@override
void camera() {
print('三星摄像头');
}
@override
void processor() {
print('骁龙888');
}
// 普通类中,不能有抽象方法
// void aaa();
}
class Huawei extends Phone {
// 普通类继承了抽象类,就必须实现抽象类中所有的抽象方法
@override
void camera() {
print('徕卡摄像头');
}
@override
void processor() {
print('麒麟990');
}
}
void main(List<String> args) {
/*
抽象类,不能被实例化
Abstract classes can't be instantiated.
Try creating an instance of a concrete subtype
*/
// var p1 = new Phone();
Xiaomi m = new Xiaomi();
m.camera();
m.processor();
m.info();
Huawei h = new Huawei();
h.camera();
h.processor();
h.info();
}