java - 当类具有接口(interface)和抽象父类(super class)时,我应该用什么来声明我的对象?

标签 java

例如我有

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();

全部有效。但是:

  1. h 只能访问 Human 接口(interface)中声明的方法/字段。
  2. c 可以访问 Human 接口(interface)以及 Chinese 类中的方法/字段。
  3. lui 可以访问 Human 接口(interface)、Chinese 类和 Louie 类中的方法/字段。

现在,为了简单起见,仅创建那种除非需要否则没有额外访问权限的引用。

例如:您仅对 Human 接口(interface)方法感兴趣,然后创建一个 Human 类型的变量。

关于java - 当类具有接口(interface)和抽象父类(super class)时,我应该用什么来声明我的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18426689/

相关文章:

java - 将文本文件从 URL 直接发送到扫描仪中

java - Nexus/Maven - 缺少...的 POM,没有可用的依赖信息

java - 如何使用 ExecutorService 处理中止的 Runnable?

java - JTable - 用于选择行的 ActionListener

Java - 如何中断长语句

java - 如何编写扩展数组容量的通用方法?

java - 有没有办法忽略 for 循环中的计数器?

java - 如何在组合框中显示操作的名称

java - JPanel 中没有显示矩形

java - 我的生产者/消费者解决方案正确吗?