• 面向对象---抽象


    抽象

    一、概述

    1、 为什么需要抽象

    有的时候,多个子类的方法声明相同、方法体不同;这个时候也可以抽取方法声明,不抽取方法体;从而让开发中知道该子类有这个特性,便于维护;

    2、抽象类意义

    (1)封装子类共有的属性和行为-------------代码复用

    (2)为所有子类提供一种统一的类型---------向上造型

    (3)为所有子类提供统一的方法入口 :每个子类的实现不同,但入口是一致的,入口就是抽象方法;

    二、抽象类

    1、        概述

    当定义了抽象方法的类也必须被abstract关键字修饰,被abstract关键字修饰的类是抽象类。

    2、        定义的格式:

    abstract class 类名 {

    }

    3、        特征

    抽象类和方法:抽象类和抽象方法都需要被abstract修饰。抽象方法一定要定义在抽象类中。抽象类中可以不定义抽象方法;

    对象:抽象类不可以直接创建对象,原因:调用抽象方法没有意义。

    子类:只有重写了抽象类中所有的抽象方法后,其子类才可以创建对象。否则该子类还是一个抽象类。

    三、抽象方法

    1、 概述

    分析事物时,发现了共性内容,就出现向上抽取。会有这样一种特殊情况,就是方法功能声明相同,但方法功能主体不同。那么这时也可以抽取,但只抽取方法声明,不抽取方法主体。那么此方法就是一个抽象方法。

    2、 定义格式

    只有方法的定义,没有方法具体的实现(连{}都没有)

     

    public abstract 返回值类型 方法名(参数);

    四、抽象关键字

    1、抽象关键字abstract不可以和哪些关键字共存?  

    l  1、private:私有的方法子类是无法继承到的,也不存在覆盖,而abstract和private一起使用修饰方法,abstract既要子类去实现这个方法,而private修饰子类根本无法得到父类这个方法。互相矛盾。

    l  2、final,暂时不关注,后面学

    l  3、static,暂时不关注,后面学

    五、面试题

    1, 抽象类中是否可以没有抽象方法?如果可以,那么,该类还定义成抽象类有意义吗?为什么?

    可以没有抽象方法,有意义,不会让其他人直接创建该类对象

    向成为千里马奋斗,为伯乐打call;
  • 相关阅读:
    Centos7安装go.10.1环境
    centos7安装PHP5
    Linux 无文件攻击memfd_create()具体操作步骤
    centos7 '/mnt/hgfs'下共享文件夹不显示问题
    fiddler连接代理手机无法上网问题解决办法
    centos 镜像软件安装包版本低,手动安装过程
    0 upgraded, 0 newly installed, 0 to remove and 112 not upgraded解决方法
    JavaScript高级程序设计(第3版)第七章读书笔记
    JavaScript高级程序设计(第3版)第六章读书笔记
    JavaScript高级程序设计(第3版)第五章读书笔记
  • 原文地址:https://www.cnblogs.com/mhy666/p/9347329.html
Copyright © 2020-2023  润新知