内部类的定义:
将一个类定义在另一个类的里该类被称之为内部类。
内部类特点:
- 内部类可以直接访问外部类的所有成员,包括私有的成员。
- 而外部类访问内部类则需要创建外部类的对象再创建内部类的对象才可以调用。
建立构造方法的对象:
内部类 对象=new 外部类构造方法().new内部类构造方法();
public class Outer {
public static void main(String[] args) {
Lnner ln=new Outer().new Lnner();
ln.method();
}
public class Lnner{
public void method(){
System.out.println("Hello");
}
}
Java中的内部类共分为四种:
静态内部类:
只可以访问外部类的静态成员和静态方法,包括了私有的静态成员和方法生成静态内部类对象的方式为:
Outer.Inner inner = new Outer.Inner();
public class Outer {
public static void main(String[] args) {
Outer.Lnner ln=new Outer.Lnner();
ln.method();
}
public static class Lnner{
public void method(){
System.out.println("Hello");
}
}
}
成员内部类:
它可以访问它的外部类的所有成员变量和方法,不管是静态的还是非静态的都可以。
- 在外部类里面创建成员内部类的实例:this.new Inner();
- 在外部类之外创建内部类的实例:(new Outer()).new Inner();
- 在内部类里访问外部类的成员:Outer.this.member
局部内部类:
像局部变量一样,不能被public, protected, private和static修饰。只能访问方法中定义的final类型的局部变量。局部内部类在方法中定义,所以只能在方法中使用,即只能在方法当中生成局部内部类的实例并且调用其方法。
匿名内部类:
匿名内部类就是没有名字的局部内部类,不使用关键字class, extends, implements, 没有构造方法。生成的.class文件中,匿名类会生成OuterClass$1.class文件,数字根据是第几个匿名类而类推。