黑马程序员技术交流社区
标题:
为什么这里会实例化一个接口?
[打印本页]
作者:
匡文
时间:
2013-10-26 00:18
标题:
为什么这里会实例化一个接口?
本帖最后由 匡文 于 2013-10-26 14:50 编辑
package com.itcast.collection;
public class Demo4{
public static void main(String[] args){
Outer out = new Outer();
out.print();
}
}
interface A{
public void test();
}
class Outer{
public void print(){
new A(){ //这里为什么可以实例化一个接口?
public void test(){
System.out.println("内部类");
}
}.test();
}
}
复制代码
复习的时候看到这个例子,这里A是一个接口,为什么可以New A()?接口不是不能创建对象吗?
作者:
Yuan先生
时间:
2013-10-26 00:31
class Outer{
public void print(){
new A(){ //这是内部类,A接口的实现类--匿名内部类,花括号内的代码就是接口的实现
public void test(){
System.out.println("内部类");
}
}.test();
}
}
复制代码
作者:
wenbaoxing
时间:
2013-10-26 00:35
这是匿名内部类。
再给你个例子,明白这个,你的就明白了。
abstract class Bad//建立一个父类
{
abstract void show();
}
class Person//建立一个类
{
Bad b=new Bad()//匿名内部类
{
void show()//覆写父类方法
{
System.out.println("chenggong");
}
};
}
class HeimaDemo
{
public static void main(String[] args)
{
new Person().b.show();
//这个是匿名内部类实现了接口并调用了show方法
new Bad()
{
void show()
{
System.out.println("hahah");
}
}.show();
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2