需求

  • 当父类某个方法,需要声明,但是又不确定如何实现时,可以用抽象方法,那么这个类就是抽象类
  • 例如:父类是一个动物类,父类里面有很多方法,其中有一个方法是吃食物,但是不知道吃什么,需要子类继承的时候重写该方法,去设置动物到底吃什么食物

细节

  • 当类用abstract关键字声明时,就是一个抽象类
  • 当一个类中存在抽象方法时,需要该类声明为abstract类
  • 抽象方法不能有方法体。例如:public abstract void eat();
  • 抽象类不能被实例化,不能 new 抽象类
  • 抽象类不一定要含abstract方法,可以没有抽象方法
  • 但是当方法是抽象方法时,类也必须是抽象类
  • abstract只能修饰方法和类,不能修饰属性以及其他
  • 如果一个类继承抽象类,则必须实现抽象类的所有抽象方法,如果子类也是抽象类,可以不实现父类的所有抽象方法
  • 抽象方法不能使用private、 final和static来修饰, 因为这些关键宇都是和重写相违背的。

练习

  • abstract final class A{ } 能编译通过吗?    错误,final是不能继承
  • abstract public static void test2(); 能编译通过吗?  错误,static和 方法重写无关
  • abstract private void test3();能编译通过吗 ? 错误  private 的方法不能重写

java中abstract关键字(抽象类)的更多相关文章

  1. Java中abstract关键字详解

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

  2. 浅谈Java中接口与抽象类的异同

    浅谈Java中接口与抽象类的异同 抽象类和接口这两个概念困扰了我许久,在我看来,接口与抽象类真的十分相似.期间也曾找过许许多多的资料,参考了各路大神的见解,也只能是简简单单地在语法上懂得两者的区别.硬 ...

  3. Java 中的关键字

    Java 中有多少个关键字,有大小写之分吗? Java 中有 48 个关键字在使用 + 两个保留关键字未使用,共 50 个关键字. Java 关键字全部都由是小写组成. Java 中保留关键字分别是哪 ...

  4. Java中的关键字有哪些?「Java中53个关键字的意义及使用方法」

    Java中的关键字有哪些? 1)48个关键字:abstract.assert.boolean.break.byte.case.catch.char.class.continue.default.do. ...

  5. 转:Java中abstract和interface的区别

    转自:Java中abstract和interface的区别 abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java ...

  6. Java中接口和抽象类的比較

    Java中接口和抽象类的比較-2013年5月写的读书笔记摘要 1. 概述 接口(Interface)和抽象类(abstract class)是 Java 语言中支持抽象类的两种机制,是Java程序设计 ...

  7. Java中的关键字 transient

    先解释下Java中的对象序列化 在讨论transient之前,有必要先搞清楚Java中序列化的含义: Java中对象的序列化指的是将对象转换成以字节序列的形式来表示,这些字节序列包含了对象的数据和信息 ...

  8. 【转】java中volatile关键字的含义

    java中volatile关键字的含义   在java线程并发处理中,有一个关键字volatile的使用目前存在很大的混淆,以为使用这个关键字,在进行多线程并发处理的时候就可以万事大吉. Java语言 ...

  9. Java中native关键字

    Java中native关键字 标签: Java 2016-08-17 11:44 54551人阅读 评论(0) 顶(23453) 收藏(33546)   今日在hibernate源代码中遇到了nati ...

随机推荐

  1. 本地Java大数据环境基础配置(Maven)

    注:图片如果损坏,点击文章链接:https://www.toutiao.com/i6812623309138559500/ 创建项目 准备pom.xml文件配置(附在文档最后) 在下载jar过程中极其 ...

  2. LINUX学习-Mysql安装

    一.安装环境 操作系统CentOS6.8 关闭SeLinux和iptables防火墙 二.网络yum源 将下面的软件下载到  /etc/yum.repos.d/   的目录下 官方基础:http:// ...

  3. vue重置data

    Object.assign(this.$data, this.$options.data()) 解析:1.Object.assign() 方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象. ...

  4. C 库函数 - pow()

    1.C 标准库 - <math.h> 2.C 库函数 double pow(double x, double y) 返回 x 的 y 次幂,即 xy. 3.pow() 函数的声明. dou ...

  5. 第56篇-ProfileData与DataLayout

    某些指令需要创建某些实例,如下: 指令 对应的DataLayout._struct._tag值 _checkcast._instanceof._aastore receiver_type_data_t ...

  6. 【经验总结-markdown】markdown字体和颜色设置

    字体设置 关键词为face <font face = "黑体">我是黑体</font> <font face = "宋体"> ...

  7. VS code远程连接Linux 开发C++ 配置详细介绍

    VS code 远程连接服务器,编译C++ 一.前期准备 1.VS code安装 Remote-SSH插件 2.Windows安装SSH. 3.Linux服务器连接测试. a.接通测试使用ping命令 ...

  8. 流言粉碎机:JAVA使用 try catch 会严重影响性能

    目录 一.JVM 异常处理逻辑 二.关于JVM的编译优化 1. 分层编译 2. 即时编译器 1. 解释模式 2. 编译模式 3. 提前编译器:jaotc 三.关于测试的约束 执行用时统计 编译器优化的 ...

  9. python3 爬取深圳主板公司名称,公司网址

    需要阅读的文档: Requests:http://cn.python-requests.org/zh_CN/latest/user/quickstart.html BeautifulSoup:http ...

  10. 运行项目时出现Sat May 15 20:00:19 CST 2021 WARN: Establishing SSL connection without server‘s identity veri

    这时我们只需要在连接数据库的url上设置:useSSL=false就可以了.