爱程序网

java 抽象类“实例化”

来源: 阅读:

  毋庸置疑,抽象类是不可以实例化,抽象类不像具体类那样描述一个具体的事物,它是提取具有相似性具体事物的公共特征的抽象,实现它也没有任何意义。

如果不继承抽象类,而是“实例化”抽象类,写法如下:

 1 package subClass;
 2 abstract class ParentClass {
 3     public abstract void abstractFun();
 4 }
 5 
 6 class SubClass {
 7     //此处"实例化"ParentClass 是实例化 ParentClass(){},并实现ParentClass的抽象方法,因此抽象类是不可以实例化的
 8     ParentClass parentClass=new ParentClass(){
 9         @Override
10         public void abstractFun() {
11             System.out.println("abstractFun()");
12         }
13     };
14     
15 }
16 
17 public class TestExtends {
18     public static void main(String args[]){
19         SubClass sub=new SubClass();
20         sub.parentClass.abstractFun();
21     }
22 }

实例化"ParentClass 是new ParentClass(){},并实现ParentClass的抽象方法,而不是 newParentClass()。

以上结构和Android事件监听相似:

  findViewById(R.id.stop_Button).setOnClickListener(new View.OnClickListener() {     
   @Override  此处省略 @Override 时 请勿以为是内部类。   
   public void onClick(View v) {
stopService(it);
}
});

抽象类特征:
  非抽象类继承抽象类必须实现抽象类的抽象方法;

关于爱程序网 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助