java 内部类分为4种:
1)静态内部类:static修饰的类叫做静态类,把静态类放到一个类的内部,就叫做静态内部类
特点:可以访问外界:静态方法/静态属性,不能访问实例资源
案例:
import inner.foo.koo;//一定要把koo静态内部类导入进来
public class demo9 {
public static void main(string[] args) {
koo koo = new koo();
koo.add();
}
}
class foo{
int a = 12;//实例变量
static int aa=16;
public static void show(){ system.out.println(静态的方法);}
//静态内部类
static class koo{
public void add(){
// system.out.println(a); 静态内部类不能访问实例资源(变量)
system.out.println(aa);
show();//静态内部类可以访问外界的静态属性和方法
}
}
}
2)成员内部类:在一个类的内部,直接定义了一个不用static修饰的类,当创建成员内部类对象的时候,外部类要先创建出来。
特点:成员内部类,可以访问外界的属性和方法
案例:
import inner.foo1.koo1;
public class demo10 {
public static void main(string[] args) {
//koo1 koo1 = new koo1();要创建成员内部类,则必须要先创建外部类对象
foo1 foo1 = new foo1();
//记住(笔试会考)
koo1 koo1 = foo1.new koo1();
koo1.show();
}
}
class foo1{
int a =12;
static int aa = 16;
class koo1{
void show(){
system.out.println(a+ , +aa);
}
}
}
3)局部内部类:使用非常的少,特点在一个方法内定义一个类(企业开发中及其少用)
特点:局部内部类,在引用外界的变量,该变量必须要使用final修饰
案例:
public class demo11 {
public static void main(string[] args) {
final int a = 12;
final int b = 13;
class foo2{
int c = 16;
public int add(){
//在局部内部类中,引用外界的变量,则变量必须用final修饰
return a+b+c;
}
}
foo2 foo2 = new foo2();
system.out.println(foo2.add());
}
}
4)匿名内部类:对原来的类的一个继承
特点:跟接口/抽象类结合使用
eg new 类名/接口名 {
重写方法
};
案例:
public class demo1 {
public static void main(string[] args) {
koo koo = new koo(){
// 可以重写方法
public string tostring() {
return 生成了一个koo的对象;
}
// 在匿名内部类里面不可以创建新的方法
// public void show(){
// system.out.println(liu);
// }
};
system.out.println(koo);
// koo.show();
}
}
class koo{
}
更多java 内部类,匿名内部类 。