java 抽象类“实例化”,java抽象

java 抽象类“实例化”,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);   
      } 
  });

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

http://www.bkjia.com/Javabc/1093872.htmlwww.bkjia.comtruehttp://www.bkjia.com/Javabc/1093872.htmlTechArticlejava 抽象类“实例化”,java抽象
毋庸置疑,抽象类是不可以实例化,抽象类不像具体类那样描述一个具体的事物,它是提取具有相似性具体…

抽象类和接口是java语言中对于抽象定义的两种机制,正是由于这两种机制的存在,才赋予了java强大的面向对象能力。

抽象类和接口之间在对于抽象类定义的支持方面具有很大的相似性,甚至可以相互替换,因此很多初学者对使用哪个总是混淆。

所以本文将

  ①分别介绍抽象类和接口

  ②对两者的区别进行剖析

一:抽象类

  ①概念:

  抽象类和一般类没有太大的区别,都是在描述事物,只不过抽象类在描述事物时,有些功能不具体。所以抽象类和一般类在定义上,都是需要定义属性和行为的。只不过,比一般类多了一个抽象函数。而且比一般类少了一个创建对象的部分。

  ②特点:

  1.抽象方法只能定义在抽象类中,抽象类和抽象方法必须被abstract修饰,但抽象类中可以不定义抽象方法。

  2.抽象类不可以被实例化

  3.只有通过子类继承抽象类并覆盖了抽象类中的所有抽象方法后,该子类才可以实例化。否则,该子类还是一个抽象类。

  4.抽象类中有构造方法,是用于给子类对象初始化的。

  5.抽象类关键字abstract不可以和final,private,static共存。

  ③什么时候用:

  在描述一个行为的时候,这个行为有N种动作,这时候就要用到抽象类了。

二:接口

  ①概念:

  抽象类是描述一个事物本质的内容的,而接口则是对一个事物的扩展。

  Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。

  ②特点:

  1.是用关键字interface定义的

  2.接口中的成员都有固定的修饰符

    成员变量:public static final

*    成员函数:public abstract*

*    eg:     *

interface Inter{
    public static final int x = 3;
    public abstract void show();
}

  3.接口中的方法都是抽象方法,而且接口不可以被实例化,接口的子类必须实现了接口中所有的抽象方法后,该子类才可以实例化。否则,该子类还是一个抽象类。

  4.一个类在继承另一个类的同时,还可以实现多个接口,这就是多继承改良后的结果。 

三:抽象类和接口

  ①语法层面的区别:

相关文章