前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >dart的类

dart的类

原创
作者头像
挥刀北上
修改2021-01-06 15:04:37
3720
修改2021-01-06 15:04:37
举报
文章被收录于专栏:Node.js开发

静态方法没法访问非静态(成员)方法与属性。

非静态方法可以访问静态方法与属性。

类可以理解为一个代码块,类具有封装、继承、多态的特性

如何创建对象,

什么是抽象类,抽象类用于定义标准

代码语言:javascript
复制
abstrct class Animal{
    eat()
}
class Dog extends Animal{

@override
eat(){
print("小狗再吃骨头")
}
}

flutter中的StatefulWidget和StatelessWidget都是抽象类,组件在使用时都使用@override实现抽象方法。

抽象类不能被实例化,抽象类中不只有抽象方法还可以有普通方法;

多态:

多态就是父类定义方法不去实现,子类去实现,子类有不同的表现。向上转型子类的实例复制给父类的引用。

dart中没有interface,就是类或者抽象类,在dart中定义接口建议使用抽象类

接口就是约定,规范。

代码语言:javascript
复制
abstrct class Db{
add();
save();
delete();
String uri;
}


class Mysql implament Db{

//实现上慢接口成员。
@veriride
add(){}
@overrider
String url;
}

接口与抽象类的区别。

何时用抽象类何时用接口,如果想共用抽象类中的公共方法就用抽象类,否则用接口;

代码演示:

代码语言:javascript
复制
abstract class Db{
    add();
    void eat(){
        print("eat");
    }
}

class Mysql extends Db{
 @override
 void add(){
     print("add");
 }
}



main() { 
  
Mysql mysql = Mysql();
mysql.eat();
}

代码语言:javascript
复制
abstract class Db{
    add();
    void eat(){
        print("eat");
    }
}

class Mysql implements Db{
 @override
 void add(){
     print("add");
 }
}



main() { 
  
Mysql mysql = Mysql();
mysql.eat();
}

类可以实现多个接口,但是类不能同时继承多个抽象类。

super的使用:

代码语言:javascript
复制
 class Db{
    void eat(){
        print("eat");
    }
    Db(String n){
        print(n);
    }
}

class Mysql extends Db{
    String b;
    Mysql(String b,String a):super(a){
        this.b = b;
        
    }
}



main() { 
  
Mysql mysql = Mysql("你好啊 啊啊啊","哦哦哦哦哦哦");

}

super的使用2

代码语言:javascript
复制
 class Db{
    void eat(){
        print("eat");
    }
    Db(String n){
        print(n);
    }
}

class Mysql extends Db{
    String b;
    Mysql(this.b):super(a);
}



main() { 
  
Mysql mysql = Mysql("你好啊 啊啊啊","哦哦哦哦哦哦");

}

代码语言:javascript
复制
 class Db{
    void eat(){
        print("eat");
    }
    Db(String n){
        print(n);
    }
}

class Mysql extends Db{
    String b;
    String a;
    Mysql(this.b,this.a):super(a);
}



main() { 
  
Mysql mysql = Mysql("你好啊 啊啊啊","哦哦哦哦哦哦");

}

mixin类似多继承。但不是继承。可以继承共用方法

总结一下:

1.一般来讲,单继承,多实现,混入是多继承 A.继承是子类需要复用父类的方法实现 B.实现接口是复用接口的参数,返回值,和方法名,但不复用方法的实现,在Dart中实现抽象类 更像在java中实现用interface修饰的接口 C.混入是多继承,当被混入的类有多个同名方法时,调用子类的该方法时,会调用with声明的最后一个拥有该方法的类中的该方法,同时混入中的父类不能继承

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档