java 内部类,匿名内部类

高洛峰
高洛峰 原创
2016-12-15 12:51:58 1235浏览

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 内部类,匿名内部类 相关文章请关注PHP中文网!

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。