您的位置:首页 > 编程语言 > Java开发

Java 匿名内部类

2016-01-20 02:13 465 查看
package day10;

/*

* 匿名内部类,就是内部类的简写格式。

* 必须有前提:

* 内部类必须继承或者实现一个外部类或接口。

* 匿名内部类:其实就是一个匿名子类对象。

* 格式:new 父类or接口(){子类}

*/

abstract class Demo{

abstract void show();

}

class Outer{

int num = 4;

/* class Inner extends Demo{

void show(){

System.out.println("show ..." + num);

}

}*/

public void method(){

//Inner in = new Inner();

//in.show();

new Demo(){

void show(){

System.out.println("show -- run " + num);

}

}.show();

}

}

public class InnerClassDemo4 {

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

//System.out.println("Hello World!");

new Outer().method();

}

}

package day10;

/*

* 通常的使用场景之一:当函数参数是接口类型时,而且接口中的方法不超过三个。

* 可以用匿名内部类作为实际参数进行传递

*/

interface Inter{

void show1();

void show2();

}

/*

*通常的使用场景之一:

*当函数参数是接口类型时,而且接口中的方法不超过三个。

*可以用匿名内部类作为实际参数进行传递。

*/

class Outer{

/* class Inner implements Inter{

public void show1(){}

public void show2(){}

}*/

public void method(){

/* Inner in = new Inner();

in.show1();

in.show2();*/

Inter in = new Inter(){

public void show1(){};

public void show2(){};

};

in.show1();

in.show2();

}

}

public class InnerClassDemo5 {

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

System.out.println("Hello World");

//show(new InterImpl());

new Inner();

}

static class Inner{

}

public void method(){

new Inner();

}

public static void show(Inter in){

in.show1();

in.show2();

}

}

package day10;

class Outer{

void method(){

//Object obj = new Object();

new Object()

{

public void show(){

System.out.println("show run");

}

}.show();

//obj.show();//因为匿名内部类这个子类对象被向上转型为Object类型。

//这样就不能在使用子类特有的方法了。

}

}

public class InnerClassDemo6 {

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: