什么是内部类
内部类–在java类中再创建一个类。
内部类分三类:普通内部类、匿名内部类与嵌套类
内部类的作用邓嘉怡C++里的“多重继承”。内部类使得一个类可以拥有继承多个具体或抽象类的能力。
普通内部类
普通内部类的创建过程
public class A{
private int mya=11;
private int aa=12;
public int value(){return mya;}
//创建内部类
class B{
private int myb=22;
public int bvalue(){return myb;}
public int geta(){return aa;}
}
}
在创建的内部类中,内部类自动地就拥有对外围类所有成员的访问权(无论是private 或 public ,方法或字段)。
当某个外围类对象创建一个内部类时,此内部类对象会秘密地捕获一个指向那个外围类对象的引用,然后再访问此外围类对象成员时,就是用那个引用来选择外围类的成员。
普通内部类的作用
1、实现了某类型接口,可以创建并返回对其的引用
2、要解决一个复杂问题,想创建一个类来辅助你的解决方案,但是又不希望这个类是公共可用的
匿名内部类
public class A{
public Contents contents(){
return new Contents(){
private int i=11;
public int value(){return i;}
};
}
}
在例子中,contents()方法将返回值的生成与表示这个返回值的类的定义结合在一起。这样创建一个集成自Contents的匿名类的对象,通过new表达式返回的引用被自动向上转型为对Contents的引用。
也就是说,使用匿名内部类,可以创建一个想要的类的子类。
并且在定义一个匿名内部类时,希望它使用一个再其外部定义的对象,那么他的参数引用就必须为final
嵌套类
在普通内部类中加static关键字,这样把类存放在static区中,就不再依赖外部类了,同时也不可以再访问外围类的成员了。相当于new一个新的类。