java - Java,声明抽象类类型的变量比声明子类类型的变量有什么优势
问题描述
假设有两个类,一个是 an abstract class Insect
,另一个是 named class Beetle extends Insect
。
因此,Beetle
在 main 中实例化对象时,您可以使用Insect beetle = new Beetle();
或Beetle beetle = new Beetle();
。
但是如果你实例化 using Insect beetle = new Beetle();
,它需要强制转换才能使用子 Beetle 类中的方法和变量,而 usingBeetle beetle = new Beetle();
能够使用父类和Beetle
类中的所有方法和变量而无需强制转换。
所以只是想知道声明抽象类类型的变量是否比声明子类类型的变量有优势?因为似乎声明一个子类类型的变量似乎更方便使用。提前谢谢你^^
解决方案
抽象类,如果为扩展类提供一些通用行为实现,在你的情况下是甲壳虫。
但是,如果 Beetle 具有并非所有昆虫共有的属性,并且该属性正在放大昆虫的通用实现,那么您可以将其添加到 Beetle。其他一些昆虫实现,可能/可能没有特定于类的属性。
推荐阅读
- java - 如何将值粘贴到 Java JOptionPane showInputDialog 框中而不是键入
- postgresql - 没有自定义转换器的 jOOQ 查询表达式类型安全
- c# - 测试多边形的点是顺时针还是逆时针列出
- node.js - 使 Typescript 在 MacOS-catalina 上的 Visual Studio Code 中工作的问题
- xamarin.android - Xamarin 目标框架未更新
- java - 基于此代码Java的文件的每个句子中有多少个单词
- github - 在 GitHub 中搜索文本
- matlab - 如何在 Matlab 中“漂亮地打印”传递函数?
- jasmine - 在 Jasmine 中满足条件后调用“it”方法
- node.js - 使用 Kentico Kontent 运行“gatsby build”时出错