java内部类 -- 基本的一些知识

时间:2022-12-24 19:57:06

内部类的基本概念

内部类

内部类,直观的理解就是,定义在另一个类中的类。

内部类的作用


1- 代码组织,整合逻辑相关的代码。
2- 代码隐藏。
3- 可以表现内部类对于外部类之间的关系。(例如:(依赖关系) 某种形式的内部类只有在外部类对象存在的情况下,才能够被创造。)
4-内部类 能够 看到外部类的全部
5- 外部类也可以看到内部类的私有成员。
(内部类,外部类就像一对夫妻)

内部类的使用

内部类的权限

实例1 :

- 为了体现内部类的权限,这里将外部类的成员提到了最严格的权限(private)
- 使用的是静态内部类,这样子我就不需要创建实例。
- 在内部类的方法show()中,我访问了外部类的 私有字符串。【可以看出内部类的特性】

public class TestBasicInner {
private static String outerStr = "**hello outer**";

public static void main(String[] args) {
Inner.show();//静态内部类
}

public static class Inner{
public static void show(){
System.out.println("the outer string is : " + outerStr);
}
}

}

内部类与外部类之间的相互依赖

  • 包括内部类对象与外部类对象间的依赖。
  • 静态方法,对象方法之间的依赖。

实例2 :

1. 探究内部类非静态情况下的特性。
2. 内部类对象的创建 依赖于 外部类的对象
3. 外部对象能够看到 内部类对象的私有方法
4. 内部类,外部类的方法,成员变量 是共享的(当然不能越过静态,非静态的界限)。【从这个角度来看,可以看作一个一体的类 —> private,public对于彼此失去了内部的意义,是一致对外的,团结内部的

public class TestBasicInnerWithObject {
private String outerStr = "**hello outer**"; //非static.

public static void main(String[] args) {
//1.创建外部对象。
TestBasicInnerWithObject outer = new TestBasicInnerWithObject();
//2.Inner类是非静态的,所以**依赖于外部对象**才能存在。
//【错误写法】Inner in = new TestBasicInnerWithObject.Inner();
//3.创建内部类对象。
Inner in = outer.new Inner();
//4.调用内部类的公共方法。
in.show();
//5.可以看到私有方法。
outer.callInnerPrivate(in);
}

public void callInnerPrivate(Inner in){
in.privateShow();
}

public class Inner{// 非static .
public void show(){// 非static.
System.out.println("the outer string is : " + TestBasicInnerWithObject.this.outerStr);
}

private void privateShow(){ //对象的私有方法。
System.out.println("this is private !!!");
}
}
}

输出结果:

the outer string is : **hello outer**
this is private !!!