一、成员内部类(最常见的)
代码:
public class NormalInnerClass {
private String type;
private void testOut() {
System.out.println("out");
}
private NormalInnerClass() {
super();
}
//内部类
class Inner{
private String name;
private void testIn() {
System.out.println("in");
NormalInnerClass in = new NormalInnerClass();
in.testOut();
}
}
public static void main(String[] args) {
//先创建一个外部类的对象
NormalInnerClass out = new NormalInnerClass();
//通过外部对象来创建内部类对象
NormalInnerClass.Inner in = out.new Inner();
in.name = "I'm In";
in.testIn();
}
1.如何创建?
(1)先创建外部类的对象。
(2)再通过外部类对象来创建内部类对象。
2.规则以及特点:
(1)内部类可以无限制访问外部类的所有方法,成员变量。(不管修饰符)
但是是通过实例化外部类对象而得到的。
(2)不存在任何用static修饰的方法和成员变量。
二、局部内部类
代码:
public class MethodInnerClass {
private String type;
private void testOut() {
System.out.println("out");
}
public void innerClass() {
class Inner{
private String name;
private void testIn() {
System.out.println("out");
}
}
Inner inner = new Inner();
inner.testIn();
}
public static void main(String[] args) {
MethodInnerClass out = new MethodInnerClass();
out.innerClass();
}
1.如何创建局部内部内对象?
(1)直接在方法里面创建内部类对象
(就是普通的创建对象的方法)
2.规则以及特点:
(1)作用域只存在于方法里面,不能存在任何static修饰的变量以及方法。
三、静态内部类
代码如下:
public class StaticInnerClass {
private String type;
private void testOut() {
System.out.println("out");
}
static class Inner{
private String name;
public void testIn() {
System.out.println("in");
}
}
public static void main(String[] args) {
Inner in = new Inner();
}
}
1.如何创建局部内部内对象?
(1)直接创建,因为他是静态内部类
方法:
外部名.内部类名 xx = new 外部名.内部类名();
2.规则以及特点:
(1) 它不能使用任何外围类的非static成员变量和方法。
(2) 在生成外部类的时候实际上静态内部类也保留了一个引用。
四、总结
1.其实如何理解内部类呢,就是类的一个变量,因为他在类中,所以可以使用类中所有的方法和变量。
2.同时这些内部类也可以继承,或是实现接口。
五、匿名内部类
当我们需要创建一个接口对象时,而该类只使用一次时,可以使用匿名内部类。
他要求实现接口里面的所有方法。