在Flutter中,有以下三種關係:bash
這三種關係能夠同時存在,可是有先後順序:ide
extends -> mixins -> implements函數
extens在前,mixins在中間,implements最後,接下來看具體的例子。post
Flutter中的繼承和Java中的繼承是同樣的:spa
@override
super
Flutter中的繼承也有和Java不同的地方:code
講完特性,看下面的代碼加深理解:對象
class Television {
void turnOn() {
_illuminateDisplay();
}
void _illuminateDisplay(){
}
}
class SmartTelevision extends Television {
void turnOn() {
super.turnOn();
_bootNetworkInterface();
}
void _bootNetworkInterface(){
}
}
複製代碼
在Flutter 中:繼承
mixins 具體的特性,能夠查看我以前寫得文章:Flutter mixins 探究接口
看具體代碼:ip
class Television {
void turnOn() {
_illuminateDisplay();
}
void _illuminateDisplay(){
}
}
class Update{
void updateApp(){
}
}
class Charge{
void chargeVip(){
}
}
class SmartTelevision extends Television with Update,Charge {
void turnOn() {
super.turnOn();
_bootNetworkInterface();
updateApp();
chargeVip();
}
void _bootNetworkInterface(){
}
}
複製代碼
Flutter是沒有interface的,可是Flutter中的每一個類都是一個隱式的接口,這個接口包含類裏的全部成員變量,以及定義的方法。
若是有一個類 A,你想讓類B擁有A的API,但又不想擁有A裏的實現,那麼你就應該把A當作接口,類B implements 類A.
因此在Flutter中:
@override
@override
看以下的代碼:
class Television {
void turnOn() {
_illuminateDisplay();
}
void _illuminateDisplay(){
}
}
class Carton {
String cartonName = "carton";
void playCarton(){
}
}
class Movie{
void playMovie(){
}
}
class Update{
void updateApp(){
}
}
class Charge{
void chargeVip(){
}
}
class SmartTelevision extends Television with Update,Charge implements Carton,Movie {
@override
String cartonName="SmartTelevision carton";
void turnOn() {
super.turnOn();
_bootNetworkInterface();
updateApp();
chargeVip();
}
void _bootNetworkInterface(){
}
@override
void playCarton() {
// TODO: implement playCarton
}
@override
void playMovie() {
// TODO: implement playMovie
}
}
複製代碼