`
hyl198611
  • 浏览: 225672 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java 内部类,匿名内部类

阅读更多

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{

 

}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics