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();
}
为什么可以?
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);
}
匿名类 看吧 都把抽象方法实现了 他不是抽象的了