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对象,如果抽象类提升为类层级就可以使用类名.的方式使用方法,而抽象类是没有方法体的,所以这样相当于打

    脸自己

  • 相关阅读:
    Angular总结一:环境搭建
    适应移动端的地址四级(省市区街道)联动选择
    插入换行符
    自定义input[type="checkbox"]的样式
    使用zepto实现QQ消息左滑删除效果
    windows 下更新 npm 和 node
    [attribute |= value] 与 [attribute ^= value],[attribute ~= value] 与 [attribute *= value] 的联系与区别
    小程序父子组件onLoad和Created之间的问题
    小程序行内元素且有border的情况下,根据文字宽度自动调节元素宽度
    块级元素水平居中
  • 原文地址:https://www.cnblogs.com/xujiaqi/p/13610828.html
Copyright © 2011-2022 走看看