关于Dart中抽象类和接口的一点总结

Dart中抽象类和接口的一点总结

抽象类和接口

Dart也是一门面向对象的语言,关于Dart的历史,这里不再详细叙述,作为google内部孵化的语言,如今已成为Flutter框架的指定官方语言。个人看来,所有面向对象的语言,都抛不开抽象类和接口,这是面向对象语言所具有的通性。

Dart中的抽象类和接口:

定义上:

Dart中定义抽象类,也是采用abstract关键字,只要类里有抽象方法,该类就得使用抽象的关键字,Dart中的抽象方法,不用abstract关键字形容。这个是区别于java的,java中抽象类里的抽象方法必须用abstract关键字修饰。

//Dart中的抽象类
abstract class Person{
  getName();
  getAge();//并不需要abstract关键字修饰
}
//java 中的抽象类
public abstract class Show {
    void showSomething() {
    }
    abstract void eat();//注意这个方法 是有abstract 关键字修饰的
}

使用上:

Dart中子类使用抽象类,可以用关键字 extends来继承,这里子类要实现抽象类里的抽象方法。Dart中的抽象类也不可以实例化,可以实例化它的子类。

注意点:

Dart中并没有interface一说,java中所谓的接口在Dart中的表现仍是抽象类,抽象类可以被继承,也可以被实现,继承的话,子类需要实现父类中的抽象方法,实现的话,这里是有区别的,子类必须得实现抽象类的属性和方法

abstract class Animal{
   int a=2;
   void eat(){
   }
   void drink(){
   }
   void say();
}

class Dog implements Animal{
  @override
  int a;

  @override
  void drink() {
    // TODO: implement drink
  }

  @override
  void eat() {
    // TODO: implement eat
  }

  @override
  void say() {
    // TODO: implement say
  }
  
}

Dart中的with

这里个人认为这是Dart中为了实现类似C++那种的多继承机制而引进的关键字。

如果子类要同时使用 extends with implements,这里的顺序是这样的 先extends 然后再with 最后implements

abstract class Animal {
  int a = 2;

  void eat() {}

  void drink() {}

  void say();
}

class Show {}

abstract class Fly {}

class Bird extends Animal with Show implements Fly {
  @override
  void say() {
    // TODO: implement say
  }
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值