• Dart学习记录(二)——抽象类、多态、接口、mixins


    1. 抽象类

      1. abstract定义抽象类

        抽象类中有抽象方法,子类必须包含该方法

    abstract class Animal{
      eat();   //抽象方法
      run();  //抽象方法  
      printInfo(){
        print('我是一个抽象类里面的普通方法');
      }
    }
    class Dog extends Animal{
      @override
      eat() {
         print('小狗在吃骨头');
      }
    
      @override
      run() {
        // TODO: implement run
        print('小狗在跑');
      }  
    }

      抽象类不能被实例化,只有继承它的子类可以

    Animal a = new Animal()// 会报错

      2.  多态

        多态就是父类定义一个方法不去实现,让继承他的子类去实现,每个子类有不同的表现。

        上面的例子就是多态。

      3. 接口 implements

       通过抽象类、普通类实现接口,使用关键字implements,一般使用抽象类(如果实现的类是普通类,会将普通类和抽象中的属性的方法全部需要覆写一遍)

    abstract class Db{   // 当做接口   接口:就是约定 、规范
        late String uri;      //数据库的链接地址
        add(String data);
        save();
        delete();
    }
    
    class Mysql implements Db{
      
      @override
      String uri;
    
      Mysql(this.uri);
    
      @override
      add(data) {
        // TODO: implement add
        print('这是mysql的add方法'+data);
      }
    
      @override
      delete() {
        // TODO: implement delete
        return null;
      }
    
      @override
      save() {
        // TODO: implement save
        return null;
      }
    
      remove(){
          
      }
    }

       

      4. 多个接口 implements

    class C implements A,B{ }
      
      5. mixins 可以使用mixins实现类似多继承的功能
        (1)作为mixins的类只能继承自Object,不能继承其他类
       (2)作为mixins的类不能有构造函数
    class C with A,B{
    }class Person{
      String name;
      num age;
      Person(this.name,this.age);
      printInfo(){
        print('${this.name}----${this.age}');
      }
      void run(){
        print("Person Run");
      }
    }
    
    class A {
      String info="this is A";
      void printA(){
        print("A");
      }
      void run(){
        print("A Run");
      }
    }
    
    class B {  
      void printB(){
        print("B");
      }
      void run(){
        print("B Run");
      } // 后面的会覆盖前面的类方法
    } class C extends Person
    with B,A{ C(String name, num age) : super(name, age); }
  • 相关阅读:
    修改代码的艺术阅读笔记-01
    周总结
    代码整洁之道阅读笔记-03
    周总结
    mybatis三种执行器性能比较
    Tomcat长连接是如何实现的
    Zookeeper在Windows下搭建集群教程
    Zookeeper单机模式下RequestProcessor流程与源码理解
    JDK NIO基础概念与原理
    zookeeper客户端访问服务端时,基于NIO的线程池绑定
  • 原文地址:https://www.cnblogs.com/w-sansamilly/p/15013807.html
Copyright © 2020-2023  润新知