6.1 抽象

在第一周就有一个Shape类的例子。这个类有很多的子类,每一个子类也实现了父类的方法。实际上父类Shape只是一个抽象的概念而并没有实际的意义。如果请你画一个圆,你知道该怎么画;

如果请你画一个矩形,你也知道该怎么画。但是如果我说:“请画一个形状,句号”。你该怎么画?

同样,我们可以定义Circle类和Rectangle 类的  draw() , 但是Shape 类的draw() 呢?

Shape 类表达的是一种概念,一种共同属性的抽象集合,我们并不希望任何Shape类的对象会被创建出来。那么,我们就应该把这个Shape类定义为抽象的。我们用 abstract 关键字来定义抽象类。

抽象类的作用仅仅是表达接口,而不是具体的实现细节。抽象类中可以存在抽象方法。抽象方法也是使用 abstract 关键字来修饰。抽象的方法是不完全的,它只是一个方法签名而完全没有方法体。

如果一个类有了一个抽象的方法,这个类就必须声明为抽象类。如果父类是抽象类,那么子类必须覆盖所有在父类中的抽象方法,否则子类也成为一个抽象类。一个抽象类可以没有任何抽象方法,所有的方法都有方法体,但是整个类是抽象的。设计这样的抽象类主要是为了防止制造它的对象出来。

抽象函数/ 抽象类

●抽象函数 ———— 表达概念而无法实现具体代码的函数

●抽象类 ------------表达概念而无法构造出实体的类

●带有abstract 修饰符的函数

●有抽象函数的类一定是抽象类

●抽象类不能制造对象

●但是可以定义变量

        •任何继承了抽象类的非抽象类的对象可以付给这个变量

实现抽象函数

  •继承自抽象类的子类必须覆盖父类中的抽象函数

  • 否则自己称为抽象类

两种抽象

●  与具体相对 

         •表示一种概念而非实体

●与细节相对

        •表示在一定程度上忽略细节而着眼大局

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值