我试图从父对象获取基础对象,但我无法做到。 我们有这样的事吗?`
public class A
{
}
public class B extends A
{
A obj = this.getParentObject();
}
由于 法赫德穆拉吉
答案 0 :(得分:2)
您应该阅读 super 关键字和 inheritance 如何在Java中运行。
在一般情况下,获取超类或您的类扩展的类并不是必需的。见下图:
public class A {
protected int value;
public A() {
this.value = 2;
}
}
public class B extends A {
public B() {
System.out.println(value); // prints 2
}
}
要引用超类,请使用 super 关键字。见下面的例子:
public class A {
public void doStuff() {
System.out.println("parent");
}
}
public class B extends A {
public B() {
doStuff(); // prints "child"
super.doStuff(); // prints "parent"
}
@Override
public void doStuff() {
System.out.println("child");
}
}
我希望这能回答你的问题。
hacky和一般不需要的东西
当然,您可以获取父对象。为此,我建议为返回自身的A类创建一个受保护(或公共)方法。请参阅下面的代码示例:
public class A {
protected A getMe() {
return this;
}
}
public class B extends A {
public B() {
A superInstance = getMe();
}
}
这是未经测试的代码,但我无法理解为什么它无法运行。
答案 1 :(得分:0)
没有这样的事情。你实例化一个B类的对象,它扩展了A.它只是一个对象,不包含"包含"一个里面。让我们说A还有其他属性:
public class A
{
public int a;
}
public class B extends A
{
public int b;
}
B类中的对象将同时具有属性a和b。
" super"您可以从基类访问方法的关键字。但你无法获得对象"来自基类。