Dart中的mixin(混入类) abstract(抽象类)和继承

mixin 混入类

语法格式 mixin MixinClassName {}

混入类 是一种代码复用机制  可以将混入类的方法和属性中 插入被混入的类中 从而实现代码的复用和组合。

由于没有构造方法所以不可以实例化

 可以使用with关键字 将以一个或者多个混入类合并到一个类中

如果混入类中 有抽象方法  则 被混入类必须要实现这个抽象方法

代码示例

// 如果需要混入多个 混入类时 格式:class ClassName with MyMixin1,MyMixin2 {}
class MyClass with MyMixin {

  @override
 void absMethod() {
  print("抽象方法的实现");
 }
}
mixin MyMixin {
  void absMethod(); // 抽象方法 没有方法体{}   被混入类必须实现
  void mixinMethod() {} //混入方法 有方法体  
}

 abstract 抽象类

语法格式 abstract class AbstractClassName{}

抽象类不能被实例化,只能被继承,用于定义类的接口或基本结构。

抽象方法是没有方法体的方法 也就是没有 {}  所以不能直接使用 只能通过继承抽象类 并实现其中的抽象方法后才能使用

abstract class MyAbstract {
     void absMethod(); // 抽象方法 没有方法体{}  被继承类 必须实现这个方法。
}

extends 继承

单继承 即 extends 后只能跟一个类

子父类关系 

                父类可以是普通类 也可以是 抽象类

                 子类可以是普通类 也可以是抽象类  子类不为抽象类 对于抽象方法 子类必须要进行实现 否则编译期间就会进行报错  如果子类为抽象类的时候 对于抽象方法 子类可以重写也可以不实现

重写和重载

方法重写 指在子类重新实现继承自父类的方法 从而改写该方法原有的行为 在dart中重写的方法必须加上@override注解

被重写的方法 可以是抽象方法 也可以是非抽象方法

代码示例

abstract class Animal {
  void makeSound(); // 抽象方法,需要实现

  void sleep() {
    print("Animal sleeps");
  }
}

class Dog extends Animal {
  // 实现
  @override
  void makeSound() { 
    print("Dog barks");
  }

// 重写
  @override
  void sleep() {
    print("Dog sleeps");
  }
}

void main() {
  Dog myDog = Dog();
  myDog.makeSound(); // 输出: Dog barks
  myDog.sleep();     // 输出: Dog sleeps
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值