Java Inner Class
Inner Class 即嵌套类,也即C++和C#中的Nested Class。但Java 的Inner Class 与 C++和C#最大的不同之处在于,嵌套类包含一个指向其容器类的引用,可以访问容器类的成员。以下代码演示了这一点:
public class Container {
String Name;
class InnerClass
{
InnerClass(){};
public void func()
{
System.out.println(Name);
}
}
public Container(String name){
Name=name;
InnerClass a=new InnerClass();
}
public static void main(String [] arg)
{
Container a=new Container(“ContainerA");
InnerClass b=a.new InnerClass(); //注意此处
InnerClass c=(new Container(“ContainerB")).new InnerClass(); //本质上等价于上一句
a.func();
c.func();
}
}
注意其中独特的new语法,在静态函数要创建一个Inner Class,必须有一个其容器类的实例。如果直接创建
InnerClass b=new InnerClass();
则会导致编译出错。
而在Container的构造函数中,创建InnerClass时,自动将this作为InnerClass的引用。
在Inner Class 中使用容器类的成员,不需指定实例,自动指向创建它的容器类。
这是一个很有用的语法特征,编译器替我们省了许多事。
本例的输出是:
ContainerA
ContainerB
还可以看到,Inner Class 可以访问容器类的任何成员,不管是public、private或protected的成员全是透明的。反之则不然,容器类只能访问Inner Class的public成员。
分享到:
相关推荐
在“java_innerclass_instance.rar_innerclass”这个压缩包中,包含的资源可能是一个关于Java内部类实例应用的示例代码。 内部类主要有四种类型:成员内部类、局部内部类、匿名内部类和静态内部类。这里我们主要...
可以通过"OuterClass.InnerClass"的方式引用静态成员类,如`new Outer.Inner1()`。 6. **使用场景** - 当需要创建一个与外部类紧密相关的辅助类,并且希望这个类在没有外部类实例的情况下也能存在时,可以使用...
Java 易混淆概念 Anonymous Inner Class Java编程语言中存在一些易混淆的概念,今天我们将探讨 Anonymous Inner Class、final、finally、finalize 的区别,Static Nested Class 和 Inner Class 的不同,&和&&的区别...
1. 对于成员内部类和静态嵌套类,可以通过`new OuterClass().new InnerClass()`或`OuterClass.InnerClass inner = new OuterClass().new InnerClass();`来实例化。 2. 局部内部类和匿名内部类只能在定义它们的方法...
Nested Class (一般是C++的说法),Inner Class (一般是JAVA的说法)
OuterClass.InnerClass innerObj = outerObj.new InnerClass(); ``` #### 三、访问权限 内部类和静态嵌套类都可以声明不同的访问权限,包括`public`、`protected`、`package-private`(默认访问权限)、`private...
嵌套类主要分为两大类:静态嵌套类(Static Nested Class)和非静态嵌套类(Non-static Nested Class),后者通常被称为内部类(Inner Class)。 - **静态嵌套类**:此类嵌套类被声明为`static`,因此它们与外部类...
InnerClass01Test.java
匿名内部类 inner class 马克-to-win java视频的详细介绍
java程序代码,供大家参考。不会的时候可以看看啊
匿名内部类 inner class 马克-to-win java视频的详细介绍
本节内容包括 接口基本概念 使用接口的例子 接口的定义 接口的实现 接口与抽象类 接口和回调 内部类(介绍)
Java面向对象(高级)-- 类的成员之五:内部类(InnerClass)
Java 面试题 经典 第一,谈谈final, finally, finalize的区别。...第三,Static Nested Class 和 Inner Class的不同,说得越多越好(面试题有的很笼统)。 第四,&和&&的区别。 第五,HashMap和Hashtable的区别。
在Java中,还有Static Nested Class和Inner Class的概念。Static Nested Class意味着创建一个static内部类的对象,不需要一个外部类对象,不能从一个static内部类的一个对象访问一个外部类对象。 在Java面试中,还...
Instance inner 实例内部类 马克-to-win java视频的介绍
Instance inner 实例内部类 马克-to-win java视频的介绍
Instance inner 实例内部类 马克-to-win java视频的介绍
Instance inner 实例内部类 马克-to-win java视频的介绍