当前位置: 首页 > 面试题库 >

Java中的父类和子类可以具有相同的实例变量吗?

梁丘逸仙
2023-03-14
问题内容

考虑以下类:

class Parent {
 int a;
}

class Child extends Parent {
 int a; // error?
}

由于多个的声明,ain 的声明Child不应该给出编译错误int a吗?


问题答案:

child.a 阴影 (或 隐藏物parent.a

这是合法的Java,但应避免使用。我希望您的IDE可以为您提供警告。

但是请注意,这只是一个问题,因为您已经向世界公开了一个 变量
。如果确保所有变量都是私有变量(将方法的API与字段的实现分开),那么父级和子级都具有相同的字段名就没关系-
子级不会仍然能够看到父母的字段。如果将方法从子级移到父级,可能会造成混乱,并且通常不易读,但比隐藏情况要好。



 类似资料:
  • 问题内容: 我有下表: 我想让Folder类具有父子关系。 问题答案: 我相信正确的映射将是: 该会的工作只有当每个家长有最多一个孩子,上面的代码适用于更一般的情况下,父母可以有许多儿童。另外,为简单起见,我省略了get / set方法。

  • 问题内容: 在Java中,实例变量和方法可以具有相同的名称而没有任何不稳定或冲突吗? 我想确保是否可以摆脱它的编译问题,以免造成任何错误。 问题答案: 是的,这很好,主要是因为在语法上,它们的用法不同。

  • 本文向大家介绍类在Java中可以具有的变量类型是什么?,包括了类在Java中可以具有的变量类型是什么?的使用技巧和注意事项,需要的朋友参考一下 类在Java中可以具有三种不同类型的变量:局部变量,实例变量和类/静态变量。  局部变量 Java中的局部变量可以在方法,代码块 和构造函数中局部声明。当程序控件输入方法,代码块和构造函数时,将创建局部变量;当程序控件离开方法,代码块和构造函数时,将销毁局

  • 问题内容: 假设我们有一个包含私有实例变量的类。 现在,让我们有另一个类,其中。如果在中没有定义访问器方法,可以在访问变量中使用非静态方法吗? 顺便说一下,我在用Java工作。 问题答案: 不,不符合Java语言规范,第3版: 6.6.8示例:私有字段,方法和构造函数 私有类成员或构造函数只能在包含该成员或构造函数声明的顶级类(第7.6节)的主体内访问。它不是子类继承的。 但是不管这种语言限制如何

  • 我有java中的类:。和类,它扩展了类。 Class保留Class的实例。 我注意到,当我调用类B的构造函数时(当我在类A中初始化这个参数时),它会执行super(),创建一个新的实例A,并初始化所有It字段。 我如何告诉class

  • 为什么我们不能在子类B中声明一个实例方法,它与父类a中的静态方法共享相同的签名? 在上面的代码中,由于A没有该名称的实例方法,并且由于Java允许对象访问静态方法,所以指向B的类型为A的对象A可以调用它中存在的静态方法(类A)。但是编译器抛出一个错误“实例方法不能重写静态方法”为什么? 注意:我可以理解,如果一个类不允许两个方法使用相同的方法名,即使其中一个是实例,另一个是静态的。但是我不明白为什