• MOOC 浙江大学 面向对象程序设计-Java笔记(6)


    ------------翁恺老师授课
    第六次课程 抽象类与接口

    1. 设计框架时一定要让数据与表现分离
    2. 分离业务逻辑。对象只是一个对象,业务逻辑才决定如何处置对象。
    3. 不同类的对象之间远一点,再远一点,最好不要碰别的对象的核心数据。
    4. 对象的状态变化最好是由动作引起,不要简单地去设置对象的状态。

    新建类、子类、抽象类、接口

    新建类: 无法通过其他类的IS-A测试;
    子类: 某类的特殊化版本,可能在原有类的基础上新增方法或修改方法;
    抽象类: 定义子类的模板;
    接口: 类还需要扮演的角色。

    本文重点介绍抽象类:

    类由两部分组成:成员变量和方法。

    类中方法:

    • 全抽象 ---抽象类(特殊一点->接口)
    • 部分方法抽象,部分方法有方法体(构造方法不可以被申明为抽象方法) ----抽象类
    • 方法均有方法体

    抽象类

    1. 抽象类除了被继承之外,没有任何用途,没有值,没有目的。
    2. 抽象类不能被实例化,但可以定义变量。(任何继承了抽象类的 非抽象类的对象 可以交付给抽象类定义的变量
    3. 类中只要有一个方法是抽象方法,该类必须申明为抽象类。
    4. 抽象类的子类(不为抽象类)必须覆盖抽象类中的所有抽象方法。
    5. 越往下继承,类内可提供的方法越来越多。

    接口(interface)

    接口是特殊的抽象类,100%纯抽象类,不允许存在方法体。

    1. 纯抽象类;
    2. 所有成员函数都是抽象函数,无任何方法体(无{},以 ;结束 );抽象函数前的 [public][abstract] 可有可无
    3. 所有成员变量都是public static final
    4. 接口之间可互相继承。

    所有继承某一接口的类均需要实现接口中所有申明的函数(相同原型的成员函数)。当往接口中添加新方法时,必须将所有实现该接口的类改变。(非常复杂的过程,最后避免这个情况哦)

    非常关键的特性: 若以接口取代具体的子类或抽象的父类作为参数或返回类型,此时可传入任何有实现该接口的类。

    附:

    • 当使用父类或者接口定义的变量,若需要对其继承的子类或实现接口的类特殊处理时,可利用 instanceof 检查是否是那一类。常与向下造型配合使用。
    • 编译器是根据引用类型来判断有哪些方法可供使用的。
  • 相关阅读:
    整数反转
    最长公共前缀
    罗马数字转整数
    单点登录
    VMware Workstation虚拟机密钥
    Pytest 用例内部执行顺序
    判断是不是回文数
    python端口IP字符串是否合法
    python求二叉树深度
    有两个字符串类型的数字,实现一个方法将它们进行相加,并返回相加后的数值。
  • 原文地址:https://www.cnblogs.com/yuecheng/p/12722711.html
Copyright © 2020-2023  润新知