例如我有
class Louie extends Chinese
abstract class Chinese implements Human
interface Human
我应该将 Louie objecta 声明为人类、中国人还是只是 Louie?
我还注意到的一件事是对象变量的范围并不相同。例如,如果我有一个中文名称变量和一个路易名称变量
最佳答案
父类(super class)型的变量可以保存子类型的引用。
这意味着:
Human h = new Louie();
Chinese c = new Louie();
Louie lui = new Louie();
全部有效。但是:
h
只能访问Human
接口(interface)中声明的方法/字段。c
可以访问Human
接口(interface)以及Chinese
类中的方法/字段。lui
可以访问Human
接口(interface)、Chinese
类和Louie
类中的方法/字段。
现在,为了简单起见,仅创建那种除非需要否则没有额外访问权限的引用。
例如:您仅对 Human
接口(interface)方法感兴趣,然后创建一个 Human
类型的变量。
关于java - 当类具有接口(interface)和抽象父类(super class)时,我应该用什么来声明我的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18426689/