毋庸置疑,抽象类是不可以实例化,抽象类不像具体类那样描述一个具体的事物,它是提取具有相似性具体事物的公共特征的抽象,实现它也没有任何意义。
如果不继承抽象类,而是“实例化”抽象类,写法如下:
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);
}
});
抽象类特征:
非抽象类继承抽象类必须实现抽象类的抽象方法;