面向对象的三大特性:
- 封装
- 继承
- 多态
dart 中类的继承:
- 子类使用
extends关键字来继承父类 - 子类会继承父类里面可见的属性和方法,但是不会继承构造函数
- 子类能复写父类的方法 getter 和 setter
简单继承
// Person.dartclass Person {String name;int age;Person(String this.name , int this.age);void printName(){print('name $name');}}// Cat.dartimport 'Person.dart';class Cat extends Person{String color;// super 关键字 , 因为父类的构造函数是不能被继承的, 但是父类需要传递参数, 所以要使用初始化列表的方式调用父类的构造函数, 并传递参数。Cat(String name, int age , String this.color) : super(name, age);// Cat(String name, int age , String this.color) : super.c(name , age); 也可以调用父类的命名构造函数void say(){print('我是 $name ---- 我的颜色是 $color');}}// index.dartimport 'lib/cat.dart';void main() {Cat cat = new Cat('小猫', 3, '白色');// 调用父类的方法cat.printName();// 调用自己的方法cat.say();}
复写父类的方法
// 父类class Person {String name;int age;Person(String this.name , int this.age);void printName(){print('name $name');}void work(){print('$name 在工作');}}// 子类import 'Person.dart';class Cat extends Person{String color;Cat(String name, int age , String this.color) : super(name , age);void say(){print('我是 $name ---- 我的颜色是 $color');// 子类可以通过 super 关键字调用父类的方法super.work();}// 复写 父类的方法@overridevoid printName() {print('$name ---- 复写父类的方法');}}// indeximport 'lib/cat.dart';void main() {Cat cat = new Cat('小猫', 3, '白色');cat.printName();cat.say();}
