定义
内部类是定义在一个类中的类,使用内部类主要有两个原因。
- 内部类可以对同一个包中的其他类隐藏。
- 内部类中的方法可以访问外部类中定义的数据,包括私有的数据。
限制
- 内部类不允许有static方法,除非是静态内部类。
- 内部类所声明的静态字段都必须是final类型的,并且初始化为一个编译时常量。
匿名内部类
如果我们只想创建一个类的一个对象,那么可以不需要为这个类指定名字,这样的类成为匿名内部类。
比如存在一个接口
interface Subject{
public void dosomething();
public String sayHello();
}
我们在一个类中创建了它的一个实例对象。
Subject subject=new Subject() {
@Override
public void dosomething() {
}
@Override
public String sayHello() {
return null;
}
};
匿名内部类最常用的是用来作为事件监听器的注册,Android开发中你一定经常用到。
局部内部类
简单的来说,将内部类定义在方法内部,那么它就是一个局部内部类,,它的优点是对外部完全隐藏,甚至连外部类也不能访问它,除了定义它的这个方法,没有任何方法指导它的存在。
public class House {
public String location = "China";
public void getLocation(){
class Information{
public String getInformation(){
return "The house location is "+location;
}
}
Information information=new Information();
information.getInformation();
}
}
静态内部类
如果只是想把一个类隐藏在另一个类的内部,并且不需要内部类有外部类的引用,那么可以将其声明为static。
静态内部类才能声明静态的成员和方法