在java中扩展内部CLSS
这显示了在创建D时,某个中间构造函数调用的错误。请告诉我如何扩展这些内部类,以及这段代码有什么问题。在java中扩展内部CLSS,java,inner-classes,Java,Inner Classes,这显示了在创建D时,某个中间构造函数调用的错误。请告诉我如何扩展这些内部类,以及这段代码有什么问题。 谢谢。您必须将C类设置为静态,以便可以从B外部访问它 public class Questions { public static void main(String[] args) { D d = new D(); } } class A { A() { System.out.println("A"); } } class B
谢谢。您必须将C类设置为静态,以便可以从B外部访问它
public class Questions {
public static void main(String[] args) {
D d = new D();
}
}
class A {
A() {
System.out.println("A");
}
}
class B extends A {
B() {
System.out.println("B");
}
class C {
C() {
System.out.println("C");
}
}
}
class D extends B.C {
D() {//compilation error
System.out.println("D");
}
}
除了一个理论问题,为什么要这样做?你必须使C类是静态的,这样才能从B外部访问它
public class Questions {
public static void main(String[] args) {
D d = new D();
}
}
class A {
A() {
System.out.println("A");
}
}
class B extends A {
B() {
System.out.println("B");
}
class C {
C() {
System.out.println("C");
}
}
}
class D extends B.C {
D() {//compilation error
System.out.println("D");
}
}
除了一个理论问题,为什么要这样做?所有非静态内部类都需要引用其外部类的实例。若您想要扩展这样的类,您需要确保将用作基的对象将有其外部对象的实例。所以你可以这样做:
class B extends A {
B () {
System.out.println("B");
}
static class C {
C () {
System.out.println("C");
}
}
}
和使用
class D extends B.C {
D(B b) {
b.super();
System.out.println("D");
}
}
所有非静态的内部类都需要引用其外部类的实例。若您想要扩展这样的类,您需要确保将用作基的对象将有其外部对象的实例。所以你可以这样做:
class B extends A {
B () {
System.out.println("B");
}
static class C {
C () {
System.out.println("C");
}
}
}
和使用
class D extends B.C {
D(B b) {
b.super();
System.out.println("D");
}
}
如果你想从类的外部扩展一个内部类,那么它就不应该是一个内部类。如果我被迫将它保留为一个内部类,我还有什么方法可以扩展它吗?如果你想从类的外部扩展一个内部类,那么它就不应该是一个内部类。如果我被迫将它保持为一个内部类,有没有一种方法可以继续扩展它?