内部类

定义在类当中的一个类(内部类可以访问外部类当中的成员)

为什么需要内部类?

1.增强封装,把内部类隐藏在外部类当中,不允许其他类访问这个类

2.增加了代码的一个维护性

内部类可以分为四种

1.实例内部类

2.静态内部类

3.局部内部类

4.匿名内部类

(ps:外部类的修饰符只能由两个,public和默认什么都不加)

java 父类公共方法怎么做单元测试 java 判断父类_外部类

实例内部类

直接定义在类当中的一个类(在类当中没有任何一个修饰符)

实例内部类的创建(属于对象)

想要创建内部类,必须要先创建外部类

例:

Outter.Inner in = out.new Inner();

java 父类公共方法怎么做单元测试 java 判断父类_内部类_02

实例内部注意点

1.想要使用内部类,必须先创建外部类

2.在内部类当中可以访问外部类当中的成员

3.在内部类当中,不能有静态的成员

4.外部类是不能直接访问内部当中的成员

java 父类公共方法怎么做单元测试 java 判断父类_java 父类公共方法怎么做单元测试_03

变量的访问(就近原则)

1.直接访问是本方法的变量

2.this访问的是本类的变量

3.Outter.this.访问的是外部诶的变量

java 父类公共方法怎么做单元测试 java 判断父类_局部内部类_04

静态内部类(在内部类前面加上static)

静态内部类的创建(属于类)

1.不需要创建外部类对象

例:Outter.Intter in = new Outter.Inner();

java 父类公共方法怎么做单元测试 java 判断父类_内部类_05

静态内部类注意点

1.静态内部类是不需要创建外部对象

2.在静态内部类当中,是没有外部类引用

3.静态内部类,是可以访问外部类的静态成员

4.静态内部类当中可以定义金宝台成员,也可以定义非静态成员

java 父类公共方法怎么做单元测试 java 判断父类_java 父类的内部类_06

静态内部类当中访问外部的普通变量

java 父类公共方法怎么做单元测试 java 判断父类_java 父类公共方法怎么做单元测试_07

局部内部类(定义在方法当中的内部类)

1.不能使用一些修饰 public private

2.局部内部只能在定义的方法当中使用

3.局部内部类当中是可以包含局部内部变量,使用的局部变量本质是final

(如果不是final常量的话,当局部内部类使用了外部类的变量,当局部内部类的方法出帧以后,在堆中大的变量就没有可以指向的地方,变成空指针)

java 父类公共方法怎么做单元测试 java 判断父类_内部类_08

java 父类公共方法怎么做单元测试 java 判断父类_java 父类的内部类_09

匿名内部类(是一个没有名字的局部内部类)

只使用一次时;必须要有父类或者接口实现

java 父类公共方法怎么做单元测试 java 判断父类_java 父类的内部类_10