如何在 main 方法中访问 Super class 变量和方法?
How do I access Super class variables and methods in main method?
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 Class 变量和方法,例如 C 可以访问 B 的方法,但是如果我想访问 A 中 C 的方法怎么办.我如何使用 super 这样简单的方式做到这一点?就像两个超级应该做的伎俩......
以及如何仅通过分配 Class C(如果存在名称隐藏)来访问 Class 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");
}
}
在 C 中使用 A 的 show() 方法的一种方法是在 C 中创建 class 一个对象并使用 A 的 show 函数。
class C extends B
{
void show()
{
new A().show();
super.show();
System.out.println("inside C");
}
}
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 Class 变量和方法,例如 C 可以访问 B 的方法,但是如果我想访问 A 中 C 的方法怎么办.我如何使用 super 这样简单的方式做到这一点?就像两个超级应该做的伎俩...... 以及如何仅通过分配 Class C(如果存在名称隐藏)来访问 Class 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");
}
}
在 C 中使用 A 的 show() 方法的一种方法是在 C 中创建 class 一个对象并使用 A 的 show 函数。
class C extends B
{
void show()
{
new A().show();
super.show();
System.out.println("inside C");
}
}