Java 基础学习之匿名内部类

   在 Java 中除了内部类之外,还有一种称为匿名内部类的概念,匿名内部类顾名思义就是指没有一个具体名称的类。

实例 1 代码:一个简单的操作
package self.learn.noinnerclass;

public interface A {            // 定义接口 A
	public void printInfo();    //  定义抽象方法
}
package self.learn.noinnerclass;

public interface A {            // 定义接口 A
	public void printInfo();    //  定义抽象方法
}

package self.learn.noinnerclass;

public class X {                   // 定义 X 类
	public void fun1() {           // 定义 fun1()方法
		this.fun2(new B());        // 传递子类实例
	}
	public void fun2(A a) {        // 定义 fun2()方法
		a.printInfo();             // 调用接口方法
	}

}

package self.learn.noinnerclass;

public class NoInnerClassDemo01 {
	public static void main(String args[]) {
		new X().fun1();     // 实例化 X 对象并调用 fun1() 方法
	}

}
运行结果截图:

在这里插入图片描述
   本程序应该很容易懂,但是现在如果接口实现类只使用一次的话,那么还有必要单独定义一个子类 B 吗?很明显是没有必要的,所以此时就可以使用匿名内部类完成,代码如下:

实例 2 代码:匿名内部类
package self.learn.noinnerclass;

public interface A {            // 定义接口 A
	public void printInfo();    //  定义抽象方法
}
package self.learn.noinnerclass;

public class X {                   // 定义 X 类
	public void fun1() {           // 定义 fun1()方法
		this.fun2(new A() {        // 匿名内部类
			public void printInfo() {  // 实现接口中的抽象方法
				System.out.println("Java is interesting!");
			}			
		});        
	}
	public void fun2(A a) {        // 定义 fun2()方法
		a.printInfo();             // 调用接口方法
	}
}
package self.learn.noinnerclass;

public class NoInnerClassDemo01 {
	public static void main(String args[]) {
		new X().fun1();     // 实例化 X 对象并调用 fun1() 方法
	}

}
运行结果截图:

在这里插入图片描述
(1)直接实例化接口对象,代码如下:

new A(){}

此时,是直接为接口实例化的,根据接口概念可知道,接口本身是不能实例化的,所以在接口实例化之后要有一个大括号,用于实现接口中的抽象方法。
(2)实现抽象方法,代码如下:

new A() {        // 匿名内部类
			public void printInfo() {   // 实现接口中的抽象方法
				System.out.println("Java is interesting!");
			}		

整个代码编写完成之后,实际上就是一个接口的实例化对象,里面的抽象方法也实现了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值