Dart语法基础系列八《抽象类》

本文介绍了抽象类在C++和Java中的定义,强调了它们作为不完整类的作用,用于类型隐藏和接口实现。文章通过实例展示了抽象类的约束和多继承特性,并探讨了如何利用抽象类进行代码复用,以及在面试中理解和表达抽象类的概念重要性。
摘要由CSDN通过智能技术生成

通常在编程语句中用 abstract 修饰的类是抽象类。在C++中,含有纯虚拟函数的类称为抽象类,它不能生成对象;在java中,含有抽象方法的类称为抽象类,同样不能生成对象。

抽象类是不完整的,它只能用作基类。在面向对象方法中,抽象类主要用来进行类型隐藏和充当全局变量的角色。

抽象类通常应用于定义接口。

抽象类特点:

  • 不能实例化

  • 类似接口,可以部分实现

  • 可以继承

  • 类可以利用抽象类完成多继承

抽象类作用一:类的约束实现



这个例子可以验证一下知识点和思想:

  • 抽象类继承

  • implements实现抽象类的约束

  • 多实现去约束

abstract class Person {

bool canSpeak = true;

eat() {}

}

abstract class Musical extends Person {

bool? canSing;

sing() {}

}

abstract class Studnet extends Person {

String? className;

goToSchool() {

}

}

class MusicMan implements Musical, Studnet {

@override

bool? canSing;

@override

bool canSpeak = true;

@override

String? className;

@override

eat() {

// TODO: implement eat

throw UnimplementedError();

}

@override

goToSchool() {

// TODO: implement goToSchool

throw UnimplementedError();

}

@override

sing() {

// TODO: implement sing

throw UnimplementedError();

}

}

那么问题来了,抽象类可以默认实现方法和属性,我想进行代码复用,不需要实现怎么办呢?

看下面的例子。

抽象类作用二:代码复用



我们知道,我们可以通过类的 extends 的继承,来实现复用父类的代码。

abstract class 和 class 类似都可以使用 extends 复用继承。

abstract class Person {

bool canSpeak = true;

eat() {

print(‘吃饭’);

}

}

abstract class Musical extends Person {

bool? canSing;

sing() {}

}

最后

面试题千万不要死记,一定要自己理解,用自己的方式表达出来,在这里预祝各位成功拿下自己心仪的offer。
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

大厂面试题

面试题目录

ps://bbs.csdn.net/topics/618166371)**

[外链图片转存中…(img-HCex31j3-1714274962983)]

[外链图片转存中…(img-Qz0tkgmz-1714274962984)]

[外链图片转存中…(img-csYrFsvQ-1714274962985)]

[外链图片转存中…(img-YJIjGwWr-1714274962985)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值