zoukankan      html  css  js  c++  java
  • 抽象类、面向抽象编程

    如果父类的方法本身不需要实现任何功能,仅仅是为了定义方法签名,目的是让子类去覆写它,那么,可以把父类的方法声明为抽象方法:

    class Person {
        public abstract void run();
    }

    把一个方法声明为abstract,表示它是一个抽象方法,本身没有实现任何方法语句。因为这个抽象方法本身是无法执行的,所以,Person类也无法被实例化。编译器会告诉我们,无法编译Person类,因为它包含抽象方法。

    必须把Person类本身也声明为abstract,才能正确编译它:

    abstract class Person {
        public abstract void run();
    }

    如果一个class定义了方法,但没有具体执行代码,这个方法就是抽象方法,抽象方法用abstract修饰。

    因为无法执行抽象方法,因此这个类也必须申明为抽象类(abstract class)。

    使用abstract修饰的类就是抽象类。我们无法实例化一个抽象类:

    这种尽量引用高层类型,避免引用实际子类型的方式,称之为面向抽象编程。

    面向抽象编程的本质就是:

    • 上层代码只定义规范(例如:abstract class Person);

    • 不需要子类就可以实现业务逻辑(正常编译);

    • 具体的业务逻辑由不同的子类实现,调用者并不关心。

  • 相关阅读:
    24-反转链表
    23-链表中环的入口节点
    22-链表中倒数第k个节点
    21-调整数组顺序使奇数位于偶数前面
    18-删除链表的节点
    17-打印从1到最大的n位数
    16-数值的整数次方
    15-二进制中1的个数
    14-剪绳子
    13-机器人的运动范围
  • 原文地址:https://www.cnblogs.com/JercanYu/p/14723818.html
Copyright © 2011-2022 走看看