美文网首页
Flutter 继承、多继承

Flutter 继承、多继承

作者: 雨泽Sunshine | 来源:发表于2022-05-06 17:36 被阅读0次

    一.继承extends

    • dart里的继承是单继承,即只能有一个父类。
    • 子类会继承父类所有非私有属性和方法。

    二.抽象类abstract

    • 不能被实例化,只能被子类继承。
    • 可以在抽象类中定义抽象方法和普通方法,抽象方法不能有实现,且子类必须重写该方法。
    abstract class Example {
      /// getter属性
      int get calculate;
    
      /// 抽象方法
      void methodOne();
      
      /// 普通方法
      void methodTwo() {
        print('methodTwo');
      }
    }
    

    三.接口实现implements

    • 当一个类被implements时,子类需要重写该类的所有属性和方法。
    class AnotherExample implements Example {
      @override
      int get calculate => 1;
      
      @override
      void methodOne() {
        print('methodOne');
      }
      
      @override
      void methodTwo() {
        print('methodTwo');
      }
    }
    
    • 虽然Dart不支持多继承,但支持多个接口。
    abstract class InterfaceOne {
      void one();
    }
    
    class InterfaceTwo {
      void two() {}
    }
    
    class Interface implements InterfaceOne, InterfaceTwo {
      @override
      void one() {}
    
      @override
      void two() {}
    }
    

    四.混合mixin

    • 不能有构造函数。
    • 一个类可以混合多个mixin类。
    • mixin不能继承。
    mixin Breathing {
      void swim() => print('Breathing');
    }
    
    mixin Walking {
      void walk() => print('Walking');
    }
    
    mixin Coding {
      void code() => print('Hello world');
    }
    
    abstract class Human with Breathing {
      
    }
    
    class Developer extends Human with Walking, Coding {
      
    }
    
    void main() {
      final developer = Developer();
      developer..walk()..code()..swim();
    }
    
    • 可以使用关键字onmixin限制为某个特定类。
    mixin BallUtil in Widget {
      double ballVolume(double radius) {
        return 4 / 3 * 3.14 * pow(radius, 3);
      }
    }
    
    class VolleyballPitch extends StatelessWidget with BallUtils {
      // code...
    } 
    

    相关文章

      网友评论

          本文标题:Flutter 继承、多继承

          本文链接:https://www.haomeiwen.com/subject/ofkzyrtx.html