一、介绍
内部类:存在与类中的类就是内部类,一般用于Android开发。
可以把内部类理解成一种继承关系
1.普通内部类
2.局部内部类
3.静态内部类
4.匿名内部类
二、笔记
1.普通内部类
/**
* 普通内部类:声明在类中,方法外的类
* 1.内部类可以直接访问外部类的属性和方法 包含私有的
* 2.外部类不能直接访问内部类的属性和方法,可以通过对象来访问,包含私有的
*
*
*/
public class NormalInnerClass { public static void main(String[] args) {
NormalInnerClass.Son fSon=new NormalInnerClass().new Son();
}
private String nameString; public void tell() { } //普通内部类 可以理解为是一个特殊的方法,可以创建对象
class Son {
private int age;
public void tell() {
System.err.println(nameString);
}
}
}
2.局部内部类
/**
* 局部内部类:声明在方法中的类,他的作用域只能在声明这个类的方法中
* 1.局部内部类,可以直接访问外部类的所有方法,包括私有
* 2.他的作用域只能在声明这个类的方法中,其他的方法不能访问,其他的类也不能访问
* 3.通过外部内部类来访问局部内部类
* 4.普通内部类不能有静态方法和静态变量
*
*/
public class LocalInnerClass { private String nameString="admin";
public void tell() { class son{
public void tell() { }
}
}
}
3.静态内部类
/**
* 静态内部类:
* 1.内部类只能直接访问外部类的静态属性和方法。
* 2.外部类只能通过类名直接访问内部类额静态属性和方法。成员属性和方法需要通过创建对象
* 3.可以有静态方法 静态变量 实例变量 实例方法
* 4.其他类可以通过类名直接调用静态属性和方法,通过创建对象访普通方法
*
*/
public class StaticInnerClass {
private static String name;
static class Son{
private String tr;
private static int age;
public void tell()
{
System.out.println(name);
} }
}
4.匿名内部类
/**
* 匿名内部类 通过调用
*
*
*/
public class AnonymityInnerClass {
public static void main(String[] args) {
Father father = new Father() {
@Override
public void menth() {
// TODO 自动生成的方法存根
super.menth();
}
};
}
} class Father { public Father() {
// TODO 自动生成的构造函数存根
} public void menth() {
System.out.println("1");
}
}