zoukankan      html  css  js  c++  java
  • 抽象方法

    抽象方法的概念

      抽象方法主要指不能具体实现的方法并且使用abstract关键字修饰,也就是没有方法体。

    具体格式如下:

      访问权限 abstract 返回值类型 方法名(形参列表);

      public abstract void cry();

    抽象类的概念

      抽象类主要指不能具体实例化的并且使用abstract关键字修饰,也就是不能创建的对象

    抽象类和抽象方法的关系

      抽象类中可以有成员变量、构造方法、成员方法;

      抽象类中可以没有抽象方法,也可以有抽象方法;

      拥有抽象方法的类必须是抽象类,因此真正意义上的抽象类应该是具有抽象方法并且使用

    abstract关键字修饰的类。

    为什么要求有抽象方法以后,AbstractTest这个类才是真正意义上的抽象类?

      抽象类中可以有抽象方法也可以没有抽象方法,抽象类是不能实例化对象的,抽象类为什么不能new对象?

    抽象类为什么不能new对象?是因为抽象类中可能有抽象方法,而抽象方法是没有方法体的,调用抽象方法是没有意义的,

    为了避免程序员不小心去调用抽象方法,因为连对象都new不了那么就调用不了抽象方法。

    案例1:抽象类与抽象方法

     抽象类的实际意义

      抽象类的实际意义不在于创建对象而在于被继承。

      当一个类继承抽象类后必须重写抽象方法,否则该类也变成抽象类,也就是抽象类对子类具有强制性和规范性,

    因此叫做模板设计模式

    开发经验分享:

      (注意:)如果在开发中必须要有某个方法,但是这个方法无法具体实现就可以把该方法写成抽象方法,这个类就

    变成抽象类。

      在以后的发开中推荐使用多态的格式,此时父类类型引用直接调用的所有方法一定是父类中拥有的方法,若以后

    更换子类时,只需要将new关键字后面的子类类型修改而其他地方无需改变就可以立即生效,从而提高了代码的可维护

    性和可扩展性。

       该方式的缺点就是:父类引用不能直接调用子类独有的方法,若调用则需要强制类型转换。

    案例2:实现抽象类

    案例3:多态在抽象类中的优势

       如果有一天我们想更换子类,我们只需要把new后面的类型更改,也就是在类名后面加一个2就可以了,后面的代码不需要动

    使用的就是Test2子类重写的show方法

       需要更换子类的时候很方便,可维护性很强。

    笔试考点:

    1、private 和 abstract 关键字不能共同修饰一个方法

      子类不能继承父类的原因只有两个,一个是私有方法一个是构造方法;一旦方法标记成private子类不能继承,不能继承就不要

    谈重写了,抽象方法不能被子类重写,他自己又没有方法体所以就没有意义了。

    2、final 和 abstract 关键字不能共同修饰一个方法

      final关键字修饰的方法不能被重写可以被继承,而抽象类指望被重写才能使用

    3、static 和 abstract 关键字不能共同修饰一个方法

      抽象类不能new对象,如果抽象类提升为类层级就可以使用类名.的方式使用方法,而抽象类是没有方法体的,所以这样相当于打

    脸自己

  • 相关阅读:
    洛谷 1850 NOIP2016提高组 换教室
    2018牛客多校第三场 C.Shuffle Cards
    2018牛客多校第一场 B.Symmetric Matrix
    2018牛客多校第一场 A.Monotonic Matrix
    2018牛客多校第一场 D.Two Graphs
    2018宁夏邀请赛L Continuous Intervals
    2018宁夏邀请赛K Vertex Covers
    BZOJ
    HDU
    ACM International Collegiate Programming Contest, Egyptian Collegiate Programming Contest (ECPC 2015)
  • 原文地址:https://www.cnblogs.com/xujiaqi/p/13610828.html
Copyright © 2011-2022 走看看