案例1:在下面的代码中,若子对象仅继承(不重写)getPrivateString,则使用子对象的引用调用getPrivateString返回父变量的值。Output=“Variable:父类中的私有访问说明符”。
案例2:在下面的代码中,若子对象覆盖getPrivateString(定义与父对象相同),则使用子对象的引用调用getPrivateString将返回子变量的值。Output=“变量:子类中的私有访问说明符”。有谁能解释一下这一点,因为在继承中,方法实际上只是子定义代码中的一部分。我想了解变量选择过程。
父母亲JAVA
package learnInheritance.parent;
public class Parent
{
private String privateString = "Variable: private access specifier in Parent Class";
public String getPrivateString()
{
return this.privateString;
}
@Override
public String toString()
{
return this.getClass().getName();
}
}
小孩JAVA
package learnInheritance.child;
import learnInheritance.parent.Parent;
public class Child extends Parent
{
private String privateString = "Variable: private access specifier in Child Class";
/*
@Override
public String getPrivateString()
{
return this.privateString;
}
*/
@Override
public String toString()
{
return this.getClass().getName();
}
public static void main(String [] str)
{
Parent parent=new Parent();
Child child=new Child();
System.out.println("parent.getPrivateString() = " + parent.getPrivateString());
System.out.println("child.getPrivateString() = " + child.getPrivateString());
}
在第一个示例中,Child
不重写该方法,因此调用Parent
方法,并引用它自己的变量。在第二个示例中,调用了Child
方法,它引用Child
中的变量。
子类无法访问其父类的私有成员。父类无法访问其子类中的任何变量。换句话说,没有所谓的“变量重写”——重写只针对方法。
private
字段(根据定义)不会被继承。您的“第二种情况”称为变量隐藏,当(在Wikipedia文章中)在某个范围内声明的变量(决策块、方法或内部类)与在外部范围内声明的变量具有相同的名称时,就会发生这种情况。
问题内容: 假设我们有一个包含私有实例变量的类。 现在,让我们有另一个类,其中。如果在中没有定义访问器方法,可以在访问变量中使用非静态方法吗? 顺便说一下,我在用Java工作。 问题答案: 不,不符合Java语言规范,第3版: 6.6.8示例:私有字段,方法和构造函数 私有类成员或构造函数只能在包含该成员或构造函数声明的顶级类(第7.6节)的主体内访问。它不是子类继承的。 但是不管这种语言限制如何
问题内容: public class A{ private int getC(){ return 0; } } 您能告诉我是否有可能通过java中的反射来做一些吸引人的事情吗? 问题答案: class A{ 编辑:这是一个安静的老帖子,但增加了一些建议 重新考虑您的设计 调用父方法的私有方法,虽然可以通过反射实现,但是不应该这样做。在父对象上调用私有方法可能会使类处于无效状态,并可能导致意外行为。
问题内容: MYSQL返回一个数组,如下所示。我正在使用列:“ id_parent”自引用表以创建层次结构。因此,“ id”为2的条目可以是“ id_parent”为2的任何条目的父级,依此类推。 如何将子级嵌套在其父级数组中的数组中 问题答案: 引用具有顺序无关紧要的优点(子节点可以位于其父节点之前):
index.js Button.js 我的问题是“如何从Button.js到index.js获取标志值”?(儿童对父母)。
我尝试了第二个查询的子表的-join,但它没有给出理想的结果。 我的第一个查询工作良好,我得到了正确的父列表,我的问题是没有得到所有的孩子当我运行第二个查询。如何解决这个问题?
问题内容: 我要删除,因此要从数据库中删除行。 我 确实 要删除某个实体及其所有行。不过,我 不 希望从它删除任何行。 如何 我能做到这一点? 是,并且是我要删除的实体。 请参阅下面的代码,了解我如何在“狗窝实体”中链接2: 目前,当我删除狗entitie(S),其相关的养犬实体 中 也被删除。 编辑:将狗映射到狗窝: 问题答案: 当前,当我删除狗实体时,其相关的狗窝实体也将被删除。 原因是您已设