面向对象--抽象类


当编写一个类时,常常会为该类定义了一些方法,这些方法用以描述该类的行为方式,那么这些方法都有具体的方法体。

但在某些情况下,某个父类只是知道子类应该包含怎样的方法,但无法准确的知道这些子类如何实现这些方法

举一个例子,所有的图形都有求面积的方法,不管你是正方形,矩形,圆形无所谓,他们都是图形,所以我们应该抽象成图形这个父类。

1),第一种做法,我们把求面积的方法作为每一个子类的自己的方法,既然图形这个父类不知道如何实现计算面积的方法,那就干脆不要管他了。这并不是一个好的思路,这样

子的话我们就不能利用多态来统一的屏蔽子类的实现细节,假设有一个图形的引用变量,该变量实际上引用到正方形子类的实例,那么这个图形变量就不能调用这个计算面积的方

法,必须将其强制类型转换为其子类类型,才可以调用这个方法,这就降低了程序的灵活性。

2),第二种做法,那我们就给父类添加一个求面积的方法,但是对于图形来说,这个方法其实是没有任何实际意义的,我们写这个方法就随便返回一个值,然后要子类都来重写

这个方法。问题就来了,如果我有一个图形的子类忘记覆盖这个方法了,java是不知道的,但是应用在逻辑上是有错误的。

那么有没有一个方式,来让我们能在父类里面加一个方法,但是这个方法在父类里面是没有实际含义的,并且要求子类必须重写这个方法,如果不重写,java在编译的时候就给我

们报错,是不是就能解决这个问题了?那么这个机制就是抽象方法,抽象方法是只有方法签名,没有方法实现的方法。



抽象方法和抽象类

抽象方法和抽象类必须使用abstract修饰符来定义,有抽象方法的类只能被定义成抽象类,抽象类里可以没有抽象方法。

/**
 * 抽象类和抽象
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值