zoukankan      html  css  js  c++  java
  • 2020.7.25

    一、今日学习内容:abstract关键字

    1、abstract关键字

          abstract是“抽象”的意思,使用abstract 修饰类,叫做抽象类。抽象类中既有抽象方法也有具体实现的方法,抽象类必须由其子类继承,才能实例化对象。abstract 修饰方法,叫做抽象方法,该方法只有方法头,没有方法体。

      (1)抽象类:abstract  class  类名{ }

                             示例:public  abstract  class  Type{  }

    注:1、用abstract关键字来表达的类,其表达形式为:(public)abstract class 类名{} 2、抽象类不能被实例化,也就是说我们没法直接new 一个抽象类。抽象类本身就代表了一个类型,无法 确定为一个具体的对象,所以不能实例化就合乎情理了,只能有它的继承类实例化。 3、抽象类虽然不能被实例化,但有自己的构造方法(这个后面再讨论) 4、抽象类与接口(interface)有很大的不同之处,接口中不能有实例方法去实现业务逻辑,而抽象类 中可以有实例方法,并实现业务逻辑,比如我们可以在抽象类中创建和销毁一个线程池。 5、抽象类不能使用final关键字修饰,因为final修饰的类是无法被继承,而对于抽象类来说就是 需要通过继承去实现抽象方法,这又会产生矛盾。(后面将写一篇关于finally的文章详细讨论)

        (2)抽象方法:abstract修饰方法,表示该方法是抽象方法,但前提该类一定是抽象类。抽象方法只声明方法头,没有方法体。

    注:1、从上面的例子中我们可以看到抽象方法跟普通方法是有区别的,它没有自己的主体(没有{}包起来的 业务逻辑),跟接口中的方法有点类似。所以我们没法直接调用抽象方法 2、抽象方法不能用private修饰,因为抽象方法必须被子类实现(覆写),而private权限对于子类来 说是不能访问的,所以就会产生矛盾 3、抽象方法也不能用static修饰,试想一下,如果用static修饰了,那么我们可以直接通过类名调 用,而抽象方法压根就没有主体,没有任何业务逻辑,这样就毫无意义了。

    (3)抽象类与抽象方法的关联:

            如果一个类中至少有一个抽象方法,那么这个类一定是抽象类,但反之则不然。也就是说一个抽象类中可 以没有抽象方法。这样做的目的是为了此类不能被实例化。 如果一个类继承了一个抽象类,那么它必须全部覆写抽象类中的抽象方法,当然也可以不全部覆写,如果 不覆写全部抽象方法则这个子类也必须是抽象类。

    二、遇到的问题:

    抽象类与抽象方法的关联不明白。

    三、计划:

    明天继续学习第六章的知识,阅读《大道至简》。

  • 相关阅读:
    一步一步学习IdentityServer4 (4) 处理特殊需求之-登录等待页面
    php 打包下载
    nginx https反向代理tomcat
    the "ssl" parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf
    layui配置
    vue 学习一
    MyCAT+MySQL 搭建高可用企业级数据库集群——第3章 MyCat核心配置讲解
    第一模块·开发基础-第3章 作业讲解
    《扭转人生的40个哲学提问》 徐帆 著
    零基础学 JavaScript 全彩版 明日科技 编著
  • 原文地址:https://www.cnblogs.com/marr/p/13451032.html
Copyright © 2011-2022 走看看