Java '的含义;包含类的子类';在爪哇?

Java '的含义;包含类的子类';在爪哇?,java,class,Java,Class,我在阅读时遇到了“包含类的子类”这个表达式。在Java中,包含类的是什么意思?这是报纸的摘录 这主要包括三件事:(i)研究实体的实现及其用法,以推断功能背后的意图;(ii)对实体及其引用的任何其他类型、方法或字段(包括常量)执行静态依赖性分析;以及(iii)检查包含类的继承层次结构和子类。应用此方法花费了大量时间和精力。此示例具有包含类的子类: class Parent { class Child { } } class ParentSubclass extends Paren

我在阅读时遇到了“包含类的子类”这个表达式。在Java中,包含类的
是什么意思?这是报纸的摘录


这主要包括三件事:(i)研究实体的实现及其用法,以推断功能背后的意图;(ii)对实体及其引用的任何其他类型、方法或字段(包括常量)执行静态依赖性分析;以及(iii)检查包含类的继承层次结构和子类。应用此方法花费了大量时间和精力。

此示例具有包含类的子类:

class Parent {
    class Child {
    }
}

class ParentSubclass extends Parent {
    void whatever() {
        new Child(); // Creates an instance of Parent.Child
    }
}
ParentSubclass
是包含
子类的子类。请注意,在
父类
(或其子类)之外,
新建子类()
将不起作用,因为您需要一个包含(“外部”)类来实例化非
静态
“内部”类

当您现在将一个方法
doSomething
添加到
Parent
,在
Child
中调用它,但在
ParentSubclass
中重写它时,事情会变得有点疯狂

class Parent {
    void doSomething() {
        System.out.println("Not doing anything");
    }

    class Child {
        void whatever() {
            doSomething(); // actually: Parent.this.doSomething()
        }
    }
}

class ParentSubclass extends Parent {
    void doSomething() {
        System.out.println("I'm just slacking.");
    }

    void whatever() {
        Child a = new Child(); // Creates an instance of Parent.Child
        a.whatever(); // will print "I'm just slacking".
    }
}

像这样的情况使得静态代码分析成为一个相当困难的问题。

因为我没有这篇论文,这是我最好的猜测:在Java中,类可以以多种方式相互关联:除了从彼此继承之外,类还可以嵌套在彼此内部

下面是一个从嵌套类继承的类的示例:

public class Outer {
    public void doSomething() {
        // ...does something
    }
    private static class Inner extends Outer {
        public void doSomething() {
            // ...does something else
        }
    }
}

在上面的示例中,
内部
继承自
外部
,它作为其包含类。

哪个元素的包含类的子类?上下文应该澄清该元素。如果您发布更多原始报价的上下文,将会有所帮助。“包含”是一个相当宽泛的术语。你能把你在那篇文章中读到的部分贴出来吗。
static
内部类不是真正嵌套的。出于所有实际目的,它们也可以放在同一个包中。为什么需要
扩展外部
?@Anony Mousse那么,嵌套的
静态
类确实可以访问其声明为
私有
的外部类的元素,而不是共享同一包的其他顶级类可以访问的包私有元素。
扩展外部
用于创建一个同时嵌套和继承的类。