本篇內容主要是對面向對象知識點擴展:主要包括如下內容:繼承,抽象類,接口,Mixins。 面向對象基礎相關知識點,能夠訪問來Dart面向對象編程(一)學習。 接下來進入主要內容編程
void main() { var stu=Student(); stu.study();//Study Dart stu.name="Tony"; stu.age=20; print(stu.isAdult);//覆寫父類計算屬性返回false stu.run();//Person run ... //多態 var person=Student(); if(person is Student){ person.study(); } } class Person { String name; int age; String _birthday; bool get isAdult => age > 18; run()=> print("Person run ..."); } class Student extends Person{ study()=> print("Study Dart"); //覆寫 計算屬性 @override bool get isAdult => age>24; @override run() { return super.run(); } } 複製代碼
####繼承中的構造方法bash
class Person{
String name;
Person(this.name);
Person.withName(this.name);
}
class Stu extends Person{
final bool isAdult;
Stu.withName(String name,bool adult) :isAdult=adult, super.withName(name);
}
複製代碼
####抽象類markdown
abstract class Person{ run(); } class Stu extends Person{ @override run() { return print("running..."); } } 複製代碼
注:最好用抽象類看成接口來使用ide
class Person{ String name; get age => 18; run()=> print("run ..."); } class Stu implements Person{ @override String name; @override get age => null; @override run() { return null; } } 複製代碼
####Mixinsoop
class A {
a()=> null;
}
class B {
a()=> null;
}
class C extends A with B{
}
//簡寫
class D = A with B ;
複製代碼
void main() { var p1 = Person(18); var p2 = Person(20); print(p1 > p2);//false } class Person { int age; Person(this.age); bool operator >(Person p) => this.age > p.age; } 複製代碼