美文网首页
abstract抽象类、继承extents、接口implemen

abstract抽象类、继承extents、接口implemen

作者: 喜剧收尾_XWX | 来源:发表于2024-01-24 10:39 被阅读0次

extents 和 implements都能实现抽象类定义规范,应该怎么选择呢?

  • 如果要复用抽象类里的非抽象方法则选择 extents
  • 如果单纯当标准定义规范的话用implements

extents实现抽象类

/*
abstract抽象类 用于定于标准。不能实例化对象,抽象方法子类必须实现

*/
abstract class Animal {
  eat(); //抽象类
  printInfo() {
    //非抽象方法,子类不必实现
    print("Animal");
  }
}

class Dog extends Animal {
  @override
  eat() {
    print("小狗在吃骨头");
  }
}

class Cat extends Animal {
  @override
  eat() {
    print("小狗在吃骨头");
  }
}

void main() {
  //多态,父类指针指向子类对象
  Animal dog = Dog();
  dog.eat();  
}

implements实现抽象类

abstract class Animal {
  eat(); //抽象类
}

class Dog implements Animal {
  @override
  eat() {
    print("小狗在吃骨头");
  }
}

class Cat implements Animal {
  @override
  eat() {
    print("小狗在吃骨头");
  }
}

void main() {
  //多态,父类指针指向子类对象
  Animal dog = Dog();
  dog.eat();
  runApp(const MyApp());
}

一个类实现多个接口

abstract class A {
  printA();
}

abstract class B {
  printB();
}

class C implements A, B {
  @override
  printA() {}
  @override
  printB() {}
}

void main() {
  C c = C();
  c.printA;
  c.printB;
  runApp(const MyApp());
}

mixin 实现多继承

/*
mixin 不能有构造函数,必须继承自object
如果混入的两个类有相同方法名称,会执行混入后边那个
类型判断 c is A  c is B c is C 都为true
*/

mixin class A {
  String info = "this is info";
  printA() {
    print("A");
  }

  run() {
    print("RunA");
  }
}

mixin class B {
  printB() {
    print("B");
  }

  run() {
    print("RunB");
  }
}

class C with A, B {}

void main() {
  C c = C();
  c.printA();
  c.printB();
  c.run();
  print(c.info);

  //类型判断
  if (c is A) {
    print("is A");
  }
  if (c is B) {
    print("is B");
  }
  if (c is C) {
    print("is C");
  }

  runApp(const MyApp());
}

相关文章

  • 1.抽象类与接口

    抽象类(abstract) 接口(interface) kotlin中接口可以继承接口 java8之前接口方法是不...

  • 二、Java初级--12、抽象类和内部类

    1、抽象类 abstract class 包含抽象方法的类,叫做抽象类 接口可以理解为纯抽象类 抽象类用于被继承,...

  • Dart中的抽象类

    Dart中的抽象类主要用于定义标准,子类可以继承抽象类,也可以实现抽象类接口。 1.抽象类通过abstract 关...

  • 3.kotlin基础:面向对象

    1.接口和抽象类 抽象类abstract class是要被具体的类来继承的来使用的,它是不能被实例化的,抽象类里面...

  • 抽象类和接口

    抽象类和接口的区别: 抽象类:1.抽象类是一个类2.定义抽象类时,使用abstract关键字修饰,继承抽象类时,使...

  • 接口是否可继承(extends)接口?抽象类是否可实现(impl

    接口可以继承接口,而且支持多重继承。抽象类可以实现(implements)接口,抽象类可继承具体类也可以继承抽象类。

  • Java

    接口和抽象类 抽象类:包含抽象方法的类为抽象类,必须用abstract修饰,特点是为了继承而创建,不能用来生成对象...

  • 抽象类

    抽象类是以abstract声明的类,抽象类的方法不一定是抽象方法。 和接口一样,抽象类不能实例化,但能被继承。 抽...

  • 抽象类

    抽象类(abstract class) 什么是抽象类被abstract关键字修饰的类 抽象类产生的原因随着继承层次...

  • Abstract Class与Interface区别

    一、Abstract Class 与 Interface 的构造抽象类 Abstract Class 接口 Int...

网友评论

      本文标题:abstract抽象类、继承extents、接口implemen

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