java,抽象类实例化?

来源:百度知道 编辑:UC知道 时间:2024/06/03 05:36:43
抽象类不能实例化,但是下面代码:
package ch6;

public class OuterD {

public static void main(String[] args){

AbstractFather af=new AbstractFather(){

{ count=(int)(100*Math.random());}

public void m(){
System.out.println("您的号码是:"+count);
}
};

af.m();

}

}

abstract class AbstractFather{
int count;
abstract void m();
}
为什么可以?

兄弟,仔细看,new AbstractFather(){ .. }; 跟的是大括号,表示是个匿名内部类,new 的是抽象AbstractFather类的实现类。
只是这个实现类很特殊,是以匿名内部类的形式实现的。

AbstractFather af=new AbstractFather(){

{ count=(int)(100*Math.random());}

public void m(){
System.out.println("您的号码是:"+count);
}
};

内部类典型的用法啊~~~~~

你学swing的时候按钮什么的都是这种方法实现的

AbstractFather af=new AbstractFather(){
}
表示实现实例化一个匿名的抽象类子类对象。
而不是new AbstractFather();
匿名类只能实例化一次。

public void m(){
System.out.println("您的号码是:"+count);
}
匿名类 看吧 都把抽象方法实现了 他不是抽象的了