gpt4 book ai didi

java - 如何在主方法中访问父类(super class)变量和方法?

转载 作者:行者123 更新时间:2023-11-30 06:12:41 25 4
gpt4 key购买 nike

    class Main
{
public static void main(String[] arg)
{
C c = new C();

c.show(); //how to access class A
}

}

class A
{
void show()
{
System.out.println("inside A");
}
}

class B extends A
{
void show()
{
System.out.println("inside B");
}
}

class C extends B
{
void show()
{
super.show(); //How to access class A
System.out.println("inside C");
}
}

使用super我可以访问 super 类变量和方法,例如C可以访问B的方法,但是如果我想访问CA的方法怎么办?我如何以简单的方式(例如使用super)做到这一点?像两个 super 应该可以做到这一点......如何仅通过分配 C 类(如果存在名称隐藏)来访问 A 类方法?

最佳答案

Java 中没有构造可以执行诸如 c.super.super.show() 之类的操作,因为它违反了封装性。 The Law of Demeter这是一个很好的原则,说明了为什么要正确避免这种情况。考虑到这一点,您在 Java 中执行请求的方法是在 b 中公开 a.show(),如下所示:

class Main
{
public static void main(String[] arg)
{
C c = new C();

c.show(); //how to access class A
}

}

class A
{
void show()
{
System.out.println("inside A");
}
}

class B extends A
{
void show()
{
System.out.println("inside B");
}

void showA()
{
super.show();
}
}

class C extends B
{
void show()
{
super.showA(); // Calls A
System.out.println("inside C");
}
}

关于java - 如何在主方法中访问父类(super class)变量和方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49890753/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com