java#内部类和嵌套类

04月20日 收藏 0 评论 0 java开发

java#内部类和嵌套类

文章申明:转载来源https://www.cnblogs.com/luohaonan/p/11326903.html

在类的类部可以定义类,叫做内部类。如果这个内部类被static修饰,此时内部的类叫做嵌套类。

内部类用在哪里,解决了什么问题?

内部类中一定包含的有外部类的引用,即Outer.this,

故,创建内部类,必须拥有外部类的实例。

public class Outer {

private String foo = "kitty";

class Inner{
Outer getOuter(){
// 在内部类中,可以通过dot this语法引用外部对象
// 即 Outer.this
return Outer.this;
}

public void bar(){
// 内部类可以访问外部类的任意属性
System.out.println(foo);
}
}

public static void main(String[] args) {
// 同过外部类dot内部类的方式 声明一个引用
Outer.Inner inner = null;

// 通过外部类实例dot new的方式创建一个内部类的实例
inner = new Outer().new Inner();
}
}

嵌套类:看一种单例的写法。

public class Singleton {
private static Singleton instance = null;

private static class Inner{
static{
instance = new Singleton();
}
}

public static Singleton getInstance(){
return instance;
}
}

其实,单例其他的写法也有其他的

public class Singleton {
private Singleton(){}
private static class Inner{
private static final Singleton INSTANCE = new Singleton();
}

public static Singleton getInstance(){
return Inner.INSTANCE;
}
}


1. 内部类可以理所当然的访问外部类的成员变量,就好像内部类原本就拥有他们似的;

2. 内部类区别于嵌套类,嵌套类不依赖于外部类,可以单独被实例化,但是内部类的实例化必须有外部类的实例;

3. 内部类的实例化必须要有外部类的实例,通过外部类实例点new的方式创建内部类实例;

4. 内部类好像可以屏蔽一些细节,外面的类看不到这些细节。同时内部类实现一些接口我继承一些类从而具有一定的功能,通过这些功能完成对外部类的数据进行操作,而且,内部类的这些功能,外面的内有看不到,这样可以避免一些特定的方法或实现被其他代码调用;

5.内部类中可以通过外部类点this表示外部类的this。入Outer.this,这就是对外部类的引用;

6.现在看来内部类就是为了操作外部类的数据而存在的吧,内部类封装了一些特定但是很私有的一些功能。

C 0条回复 评论

帖子还没人回复快来抢沙发