美文网首页
抽象类(abstract)的理解

抽象类(abstract)的理解

作者: QinRenMin | 来源:发表于2017-12-11 20:55 被阅读0次

    解释:抽象,抽取事物的共性

    • 特点
      1 方法只有声明没有实现时,该方法是抽象方法,要被abstract修饰,抽象方法必须定义在抽象类中,该类也被abstract修饰。

      2 抽象类不可以被实例化,为什么?
          解答:调用抽象方法没有意义。

      3 抽象类必须有其子类覆盖了所有的抽象方法后,该子类才可以实例化,否则,这个子类还是抽象类。

    • 问题:

      1 抽象类中有构造函数吗?
          解答:有,用于给子类对象初始化。
      2 抽象类可以不定义抽象方法吗?
          解答:可以,但是十分少见,目的就是让该类创建对象。AWT的适配器对象就是这种类,通常这种类的方法有方法体,但是没有内容。
      例如

    abstract class Demo{
        void show() { }
    }
    

    3 抽象关键字不可以和哪些关键字共存?
        解答:
    1).private :因为一个abstract方法需要被重写,所以不能修饰为private;
    2).final:因为一个abstract方法需要被重写。被final修饰的方法是不能被重写的,所以不能同final共存;
    3).static:因为一个abstract方法没有方法体。静态方法需要对方法体执行内容分配空间,所以不能同static共存;(abstract是没有实现的,不能产生对象,而是static是属于类的,类本身是已经存在的对象);
    4).synchronized: 是同步的,然而同步需要具体的操作才能同步,但, abstract是只有声明没有实现的(即,使用synchronized关键字的是需要有具体的实现同步的操作的,但是使用abstract是只有声明而没有实现的,这样就产生了冲突);
    5).native:他们本身的定义就是冲突的,native声明的方法是移交本地操作系统实现的,而abstract是移交子类对象实现的,同时修饰的话,导致不知道谁实现声明的方法。

    4 抽象类和一般类的异同点
    相同点:抽象类和一般类都是用来描述事物的,在内部定义了成员。
    不同点:
        1.一般类有足够的信息描述事物,抽象类有可能不足;
        2.一般类不能定义抽象方法,抽象类可以定义抽象方法和非抽象方法。
        3.一般类可以被实例化,抽象类不可以被实例化。

    5.抽象类一定是父类吗?
        解答:是的,因为需要其子类覆盖其方法后才可以实现对子类实例化。

    相关文章

      网友评论

          本文标题:抽象类(abstract)的理解

          本文链接:https://www.haomeiwen.com/subject/djewixtx.html