abstract只能修饰类(class) 和 方法。而不能修饰成员变量。这是由于抽象的概念确定的。只有类和方法可以抽象出来,而成员变量不需要抽象。

abstract修饰类

abstract之所以出现,是因为面向对象的思想所趋。在面向对象的思想中,不同的类之间可能具有高度相似的成员变量以及个别的方法。那么为了避免重复代码。我们需要将各个类之间高度统一的成员变量和方法抽象出来封装为一个抽象父类。它提供子类共有的域和方法。但是不给出具体实现。这就是abstract的来源。也正因为如此。abtract修饰的类不能被对象化。他的存在,只是为了子类去继承它。这样子类就不需要重复编写相同的代码(例如高度一致的域和函数)。

例如:Teacher(教师) 、Student(学生)、Singer(歌手) 三个类都有很多相同的属性和方法。例如,他们都有name(名字)、age(年龄)、address(地址)的属性。也都有eat(),sleep()等方法。如果我们不想在前面三个对象中都重复定义方法和域的话。我们可以把他们共有的东西抽象出来,定义一个父类。然后让三个子类去继承父类,来达到复用代码的作用。那么这时候肯定有朋友会问,那我这个父类能不能不要用abstract修饰呢,这样子类一样可以继承然后重写自己需要的方法呀。其实这里abstract的作用就和接口很像,他强制的让继承父类的子类重写抽象方法。防止你忘了重写,也提高代码的可读性。在抽象父类中可以很明显的看出哪些方法是需要子类来覆盖而那些方法是子类可以直接拿来共用的。

abstract修饰方法

当abstract修饰方法时,则该方法是抽象方法,而抽象方法只能存在于抽象类中。所以可以说,抽象方法一定存在于抽象类中,但是抽象类中可以不全是抽象方法,他还可以有其他方法。

那什么时候我们会把方法封装成抽象方法呢,一般当子类都要有该方法但是各个子类又有不同的实现的时候,我们就会使用抽象方法。强制保证子类继承父类的时候必须重写该方法。如果父类有一个方法各个子类的实现都相同时,那么父类就不必将其定义成抽象方法。将其定义成普通方法就可以了。子类继承就不必重写,直接就可以拿来用。

Java中abstract关键字详解的更多相关文章

  1. Java中Volatile关键字详解 (转自郑州的文武)

    java中volatile关键字的含义:http://www.cnblogs.com/aigongsi/archive/2012/04/01/2429166.html 一.基本概念 先补充一下概念:J ...

  2. Java中Volatile关键字详解

    一.基本概念 先补充一下概念:Java并发中的可见性与原子性 可见性: 可见性是一种复杂的属性,因为可见性中的错误总是会违背我们的直觉.通常,我们无法确保执行读操作的线程能适时地看到其他线程写入的值, ...

  3. Java中Volatile关键字详解(转载)

    转载自:https://www.cnblogs.com/zhengbin/p/5654805.html 一.基本概念 先补充一下概念:Java 内存模型中的可见性.原子性和有序性. 可见性: 可见性是 ...

  4. Java中Static关键字详解以及静态变量和成员变量的区别

    一.static关键字的特点 (1)修饰成员变量.成员方法(2)随着类的加载而加载(3)优先于对象存在(4)被所有对象共享(5)可以通过类名调用 它本身也可以通过对象名调用 例如:main()方法由j ...

  5. java continue break 关键字 详解 区别 用法 标记 标签 使用 示例 联系

    本文关键词: java continue break 关键字 详解 区别  用法 标记  标签 使用 示例 联系   跳出循环 带标签的continue和break 嵌套循环  深入continue ...

  6. java中的注解详解和自定义注解

    一.java中的注解详解 1.什么是注解 用一个词就可以描述注解,那就是元数据,即一种描述数据的数据.所以,可以说注解就是源代码的元数据.比如,下面这段代码: @Override public Str ...

  7. 【转载】C/C++中extern关键字详解

    1 基本解释:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义.此外extern也可用来进行链接指定. 也就是说extern ...

  8. Java中dimension类详解

    Java中dimension类详解 https://blog.csdn.net/hrw1234567890/article/details/81217788

  9. [转载]java中import作用详解

    [转载]java中import作用详解 来源: https://blog.csdn.net/qq_25665807/article/details/74747868 这篇博客讲的真的很清楚,这个作者很 ...

随机推荐

  1. WPF DataGrid Custommization using Style and Template

    WPF DataGrid Custommization using Style and Template 代码下载:http://download.csdn.net/detail/wujicai/81 ...

  2. nginx知识点简单回顾

    html { font-family: sans-serif } body { margin: 0 } article,aside,details,figcaption,figure,footer,h ...

  3. SAP 参照sto订单创建外向交货BAPI

    DATA: SHIP_POINT TYPE TVST-VSTEL, "装运点/接收点 NUM_DELIVERIES TYPE VBNUM, STOCK_TRANS_ITEMS WITH HE ...

  4. 数据库中有的字段为null时,反馈到页面上是什么也不显示?如何用一个【无】字来代替呢?

    <asp:ListView ID="listViewCustomer" DataSourceID="ods_Customer" runat="s ...

  5. win10 uwp 右击浮出窗在点击位置

    本文主要让MenuFlyout出现在我们右击位置. 我们一般使用的MenuFlyout写在前台,写在Button里面,但是可能我们的MenuFlyout显示的位置和我们想要的不一样. 通过使用后台写S ...

  6. ELK系列~log4-nxlog-Fluentd-elasticsearch写json数据需要注意的几点

    经验与实践 前两篇文章里我们介绍了nxlog的日志收集和转发<ELK系列~Nxlog日志收集加转发(解决log4日志换行导致json转换失败问题)>,今天我们主要总结一下,在与log4和f ...

  7. 做多了国际化项目,你怎么处理时区不同的各种blabla...问题

    我们做的的都是国际化大项目,今天发现了个大bug,没错!是时区不同引起的,如果你觉得这还不简单,这样,这样,再这样不就可以了吗?我只能呵呵了. 先来普及一下基础知识 : 1.地球分为24时区,北京位于 ...

  8. 安利一波那个叫做 hutool 的通用工具类库

    摘自3.1.1版本作者发布原话,当时看到有点说不上的情绪,为作者的坚持.热爱点个赞. 已经想不起来是怎样结识 Hutool 的,但 Hutool 伴随几个项目的推进,获得了同事一致好评. 没经过实践和 ...

  9. LeetCode 111. Minimum Depth of Binary Tree (二叉树最小的深度)

    Given a binary tree, find its minimum depth. The minimum depth is the number of nodes along the shor ...

  10. 【译】10分钟学会Pandas

    十分钟学会Pandas 这是关于Pandas的简短介绍主要面向新用户.你可以参考Cookbook了解更复杂的使用方法 习惯上,我们这样导入: In [1]: import pandas as pd I ...