首页 > 解决方案 > 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类中的所有方法和变量而无需强制转换。

所以只是想知道声明抽象类类型的变量是否比声明子类类型的变量有优势?因为似乎声明一个子类类型的变量似乎更方便使用。提前谢谢你^^

标签: javaclasssubclassabstract

解决方案


抽象类,如果为扩展类提供一些通用行为实现,在你的情况下是甲壳虫。

但是,如果 Beetle 具有并非所有昆虫共有的属性,并且该属性正在放大昆虫的通用实现,那么您可以将其添加到 Beetle。其他一些昆虫实现,可能/可能没有特定于类的属性。


推荐阅读