• 面向对象特性<二>


    抽象类

    抽象:不具体, 没有实体
    怎么抽取:抽取过程中,将共性的具体方法写出来, 将具有类似但实现不同的方法用抽象方法抽取出来, 让子类进行实现。

    1. 抽象类的特点:

    • 抽象方法指能定义在抽象类和接口中。
    • 抽象放啊之定义方法声明, 没有具体实现
    • 抽象类不可以创建对象
    • 只有通过子类继承抽象类并覆盖了抽象类中的所有抽象方法后该子类才可被实例

    抽象的细节

    1. 抽象类中有构造函数,用于给子类初始化用的
    2. 抽象类中是否可以定义非抽象方法: 可以, 其实抽象类和一般类没有太大的区别。 只是可以拥有抽象方法。
    3. 抽象关键字abstract和那些不可以共存, final, private , static 。 前面两个式禁止子类访问的, 而抽象的目的就是子类继承。 static是通过类直接访问方法, 而抽象类的抽象方法则没有具体实现,则不行。

    模板设计模式:

    是指:当功能内部一部分实现时确定,一部分实现是不确定的。这时可以把不确定的部分暴露出去,让子类去实现

    abstract class GetTime{
    public final void getTime(){ //此功能如果不需要复写,可加final限定
    long start = System.currentTimeMillis();
    code(); //不确定的功能部分,提取出来,通过抽象方法实现
    long end = System.currentTimeMillis();
    System.out.println("毫秒是:"+(end-start));
    }
    public abstract void code(); //抽象不确定的功能,让子类复写实现
    }
    class SubDemo extends GetTime{
    public void code(){ //子类复写功能方法
    for(int y=0; y<1000; y++){
    System.out.println("y");
    }
    }
    }
    

    接口

    成员变量:public static final修饰, 是常量
    成员方法: public abstract 修饰, 是抽象方法

    1. 用关键字interface定义。
    2. 接口中包含全局常量, 抽象方法
    3. 接口中有抽象方法, 所有接口不可以被实例化
    4. 类与类之间存在着继承关系, 类与接口之间存在着实现关系
    5. 接口和类不一样的地方就是接口可以被多实现, 而类不可以被多继承
    6. 一个类在继承另一个类的同时, 还可以实现多个接口。 所以这就是多继承的改良版
    7. Java中也有多继承, 不过是在接口和接口之间的, 所以和类也就没什么关系了。

    接口都用于设计上, 特点是:

    • 接口对外提供规则
    • 接口是功能的扩展
    • 接口的出现降低了耦合性

    抽象类和接口

    抽象类: 一般用于描述一个体系单元。将共性的内容进行抽取, 特点: 可以在类中定义抽象内容让子类实现,可以定义非抽象内容让子类直接使用。
    抽象类的设计: 继承的子类要视抽象类中的方法为基本都要实现的功能。
    接口: 一般用于定义对象的扩展功能, 是在继承之外还需要的一些功能

    接口和抽象类的区别:

    1.抽象类只能被继承, 而且只能单继承,接口需要被实现, 而且是多实现
    2. 抽象类中可以定义非抽象方法, 子类可以直接继承使用, 接口中都有抽线方法, 需要子类去实现
    3. 抽象类使用的是 is a 关系, 接口使用的是like a 关系
    4. 抽象的成员修饰符可以自定义, 接口中的成员修饰符是固定的, 全部都是public.

    多态

    1. 体现: 父类引用指向自己不同的子类对象,具有不同的体现。
    2. 多态的好处: 提高了程序的扩展性,一个方法可以调用不同的方法, 相对于之前的硬编码,省下了很多。
    3. 弊端: 父类引用指向子类对象的时候, 虽然提高了程序的扩展性, 但是只能访问父类中的方法, 不能访问子类中特有的方法。
    4. 多态的前提:
    • 必须要有关系, 比如继承, 或者实现
    • 会有覆盖操作

    多态的出现思想上也做着变化:以前是创建对象, 然后指挥对象做事。现在是找到一些对象的共性类型, 通过操作共性类型进行做事情就可以了

    多态再子父类的成员上的体现的特点:

    1. 成员变量: 再编译的时候, 编译器参考的是引用的类型。运行的时候参考的是也是参考引用的类型
    2. 成员方法: 编译的时候参考的是引用的类型, 运行的时候参考的是对象所属的类型
    3. 静态函数是以类为单位, 所以它参考的就是所属的类
    Object是顶级父类

    里面有共有的方法: equals, toString,hashcode通常会被复写,

  • 相关阅读:
    基于Html5的移动应用开发经验总结:第一篇架构选型篇(下)
    401 Palindromes 解题报告
    uva 537 Artificial Intelligence?
    根据所给的年月,打印该月份的日历表
    八皇后问题
    uva10815 Andy's First Dictionary
    憋了我半天,写个博客发泄一下
    uva 457
    uva 10010 Where's Waldorf?
    uva424 Integer Inquiry
  • 原文地址:https://www.cnblogs.com/jwlxtf/p/7924023.html
Copyright © 2020-2023  润新知