解释在Java中访问内部类的方法?

卡尔汉·托雷斯
class Outer {    
    class Inner {       

    }    
}

public class Demo {
    public static void main(String args[]) {

        Outer o = new Outer();
        Outer.Inner inner = o.new Inner();    

    }    
}

我为Inner类对象创建引用的方式类似于访问类中的static成员Outer
您能解释一下这背后的机制吗?

谢尔盖·卡里尼琴科(Sergey Kalinichenko)

我为Inner类对象创建引用的方式类似于访问类中的static成员Outer

完全没有-因为您使用的实例Outer访问的构造函数,所以Inner这非常类似于访问类的实例成员而Outer不是其static成员。Inner声明中的类名用其外部类的名称限定,Outer以避免与顶级类的命名冲突。

原因很容易理解:它Inner是一个非静态内部类,因此需要引用一个Outer它隐式地这样做,但是必须将引用传递给幕后的构造函数。因此,您可以Inner在的实例上调用的构造函数Outer

创建static实例的语法与创建常规类实例的语法相似,不同之处在于嵌套类的名称必须以其外部类的名称作为前缀-即遵循以下static语法:

class Outer {    
    static class Inner {       

    }    
}

public class Demo {
    public static void main(String args[]) {
        Outer.Inner inner = new Outer.Inner();    

    }    
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何访问python内部类中的方法?

来自分类Dev

从内部类中访问Java actionlistener变量

来自分类Dev

Java android访问外部类中内部类的成员字段

来自分类Dev

访问内部类中的变量

来自分类Dev

从内部类中的with访问的变量

来自分类Dev

内部类中的变量访问

来自分类Dev

如何在Java中访问内部类(在assert中)

来自分类Dev

如何从Java中的封闭类访问内部类?

来自分类Dev

Java无法访问内部类中的受保护变量

来自分类Dev

无法访问Java中的内部类问题

来自分类Dev

在Java ASM中访问私有内部类

来自分类Dev

在struts.xml中访问Java内部类

来自分类Dev

在静态内部类内部访问外部类的方法

来自分类Dev

Java:为什么匿名内部类可以访问外部类的方法?

来自分类Dev

如果在内部类中访问的方法中定义的内部类要求在方法中声明的变量是最终的,

来自分类Dev

内部类方法对父方法变量的访问

来自分类Dev

Java:如何从内部类中的方法返回外部方法

来自分类Dev

从方法局部内部类访问局部变量,在该方法中我们声明内部类

来自分类Dev

Delphi中的Java内部类

来自分类Dev

Java中的内部类与子类

来自分类Dev

Delphi中的Java内部类

来自分类Dev

无法从内部类访问包含类的方法

来自分类Dev

C ++:如何访问内部类的方法?

来自分类Dev

异步模块内部类的访问方法或

来自分类Dev

Java内部类访问和最佳实践

来自分类Dev

使用Clojure访问Java静态内部类

来自分类Dev

Java内部类-访问外部对象的变量

来自分类Dev

Java外部类对内部类接口常量的访问

来自分类Dev

从Java中的静态方法返回内部类的实例