Head First Java: 怎么判断你需要创建一个父类、子类、抽象类还是接口

一、引言

这是我在学习《Head First Java》(英文版)第 8 章 P227 页时候看到的总结性言论,觉得作者说的很简单易懂很不错,于是想要分享出来,以飨广大朋友。

该言论是作者用来总结,如何判断自己:
什么时候需要创建一个父类?
什么时候需要创建一个子类?
什么时候该创建一个抽象类?
又是什么时候该创建一个接口?

分清楚这四个概念,也许不是那么简单。

二、英文原文

How do you know whether to make a class, a subclass, an abstract class, or an interface?
1. Make a class that doesn’t extend anything (other than Object) when your new class doesn’t pass the IS-A test for any other type.
2. Make a subclass (in other words, extend a class) only when you need to make a more specific version of a class and need to override or add new behaviors.
3. Use an abstract class when you want to define a template for a group of subclasses, and you have at least some implementation code that all subclasses could use. Make the class abstract when you want to guarantee that nobody can make objects of that type.
4. Use an interface when you want to define a role that other classes can play, regardless of where those classses are in the inheritance tree.

三、中文释义

简要提炼下上述的原文意思:
你如何知道自己需要创建一个(父)类、子类、抽象类或者接口呢?
1. 创建一个(父)类,当你的新类无法与其他任何类通过IS-A 测试(除了 Object 类,因为在 Java 中所有类都继承了 Object 类)
2. 创建一个子类,当你需要创建一个已经存在类的更加明确的版本的时候,此时需要你在这个子类中重写父类的方法或者添加一些新的行为
3. 创建一个抽象类,当你想要创建一组子类的模板的时候,在这个抽象类中,你至少需要实现一些该组子类通用的方法。并且关键的是,当你创建一个类为抽象类,这就意味着你不想要让这个类有任何的对象生成(仅仅用于规范一组子类的行为而已)。
4. 创建一个接口,当你需要定义一些类的某种角色的时候,无论这些类在继承树中哪个位置。

四、总结

分清(父)类、子类、抽象类和接口,关键其实就在于作者加黑强调的那么几个单词:

more specific 这很明显是子类的特征
template 这当然是说的抽象类,我们当然不想要让模板有实例对象生成
role 这也是接口的特征,与继承机制相辅相成,构成了 Java 的独特的 OO 框架

认真阅读作者的这段话,真的能够领悟更深。
To be Stronger:)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值