抽象方法与抽象类 --笔记

2023-10-29

抽象方法:只有方法名、参数表和返回值,没有方法体。
既然抽象方法没有方法体,那么也就不能被执行。如果某个类含有抽象方法,那么这个类必须定义为抽象类,即在类定义前用关键字abstract修饰。
但需要注意,一个抽象类可以没有抽象方法。
抽象类没有具体的对象。
通常定义抽象类的对象引用指向它子类的对象。

注意:抽象方法和抽象类
   1抽象类不可以创建对象
   2包含抽象方法的类必须被声明为抽象类
   3抽象类中可以包含非抽象方法和抽象方法,但不一定包含抽象方法
abstract class Animal{
    int age;
    Animal(int a){
        age=a;
    }
    int getAge(){
        return age;
    }
    abstract void speak();//抽象方法
}
class Cat extends Animal{
    Cat(int a ){
        super(a);
    }
    void speak(){        //覆写抽象方法speak()
        System.out.println("Cat speaking");
    }
}
class Bird extends Animal{
    Bird(int a ){
        super(a);
    }
    void speak(){
        System.out.println("Bird speaking");
    }
}
public class AnimalDemo {
    static void makeSpeak(Animal a){
        a.speak();//多态,调用哪个speak()方法由a所引用的对象决定
    }
    public static void main(String args[]){
        Cat c=new Cat(3);
        Bird b=new Bird(2);
        makeSpeak(c);
        makeSpeak(b);
    }
}

程序运行结果:
Cat speaking
Bird speaking

结果说明:
虽然抽象类不能创建对象,但可以像普通类那样用作变量的类型,如makeSpeak()方法的参数a。在makeSpeak()中通过动态绑定执行相应的speak()方法。
若一个子类未实现父类中的抽象方法,这个子类也是抽象类,必须用关键字abstract修饰。因为不能创建抽象类的对象,所以抽象类保证了其所有子类若可以实例化,必须实现抽象类中声明的抽象方法。

静态方法、私有方法和final修饰的方法是不能被覆写的,因此这三类方法不能被定义为抽象方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

抽象方法与抽象类 --笔记 的相关文章

  • 数据结构:队列Queue详解

    文章目录 一 队列的概念和特点 二 队列的使用 三 队列的简单实现 四 循环队列 一 队列的概念和特点 队列 只允许在一端进行插入数据操作 在另一端进行删除数据操作的特殊线性表 进行插入操作的一端称为队尾 删除操作的一端称队头 入队列 进行

随机推荐

  • 管理系统的设计与实现方法总结

    项目总结 1 项目开发背景 目前 国内外毕业论文选题一般采用两种方式 一种将毕业设计存在软盘上交 另一种则存放到教师的电脑上的一个共享目录内 但这两种方法都有各自的弊端 前一种方法不方便携带 速度慢 容量小 易损坏 后一种方法虽然解决了软盘
  • 关于互联网思维与技术团队的一些总结

    2017 7 4更 真正在底层工作的人员 跟站在高层的人看到的东西都是两个东西 真正的从底层走到高层才能看的更精准 同样的 从底层走到高层的人 也没有一直处在高层的远见与见识 我信奉公司处于什么阶段用什么样的人 没必要一开始就弄高精尖的人和
  • 基于Docker的Hadoop集群搭建

    基于Docker的Hadoop集群搭建 本文为在阿里云服务器上基于docker的Hadoop集群搭建 安装思路为 安装docker gt 运行docker导入ubuntu镜像 gt 运行ubuntu系统 gt 在系统中配置好单个节点 gt
  • FreeMarker整合Spring 3

    开发环境 System Windows WebBrowser IE6 Firefox3 JavaEE Server tomcat5 0 2 8 tomcat6 IDE eclipse MyEclipse 8 开发依赖库 JavaEE5 Sp
  • [QT编程系列-9]:C++图形用户界面编程,QT框架快速入门培训 - 3- QT窗体设计 - 自动布局

    目录 3 QT窗体设计 3 7 自动布局 3 7 1 自动布局 3 7 2 在主窗口中自动布局 3 7 3 在自动布局容器中自动布局 3 7 4 在widget中自动布局 3 7 5 自动布局工件 3 QT窗体设计 3 7 自动布局 3 7
  • 基于单片机火灾报警器仿真设计

    一 系统方案 1 本设计采用51单片机作为主控器 2 DS18B20采集温度值送到液晶1602显示 3 MQ2采集烟雾值 送到液晶1602显示 4 按键设置温度报警值 大于报警值 声光报警 二 硬件设计 原理图如下 三 单片机软件设计 1
  • qt ×掉子窗口后,进程还没有停止的问题

    掉子窗口后 子窗口还在接受数据的问题 当子窗口显示时 先关闭父窗口 调用的先后顺序为 当子窗口显示时 先关闭子窗口 调用的先后顺序为 找到原因 此时子窗口的析构函数没有执行 解决方案 先说解决方案 给子窗口设置以下属性 setAttribu
  • UE4 去掉自动曝光(光线自适应)

    UE4在没有PostprocessingVolumn时 会在场景中加入自动曝光 有时会导致过亮或者过暗 解决方法 关闭ProjectSetting Rendering DefaultSetting中的AutoExposure 自动曝光 在场
  • CentOS安装错误:no default or ui configuration

    靠 以后再也不用浏览器自带的下载工具下载镜像文件了 原来是下载的不完整 但是显示完全下载完毕了 真特么误导人 文件的checksum不对 references https www centos org forums viewtopic ph
  • c++11 pod类型(了解)

    c 11 pod类型 了解 啥是POD类型 POD全称Plain Old Data 通俗的讲 一个类或结构体通过二进制拷贝后还能保持其数据不变 那么它就是一个POD类型 平凡的定义 1 有平凡的构造函数 2 有平凡的拷贝构造函数 3 有平凡
  • ReactHook EffectHook

    副作用操作 使得函数组件能够进行生命周期的操作 可以有多个 类组件中相同的生命周期会进行覆盖 会在 可以看作是以下生命周期函数的结合 componentDidMount componentDidUpdate 和 componentWillU
  • MR应用开发 —— Hadoop权威指南10

    1 Configuration Hadoop的配置API 之前 在获取Hadoop文件实例时 经常会创建一个Configuration实例 Configuration是Hadoop用于配置的API 是property和value的集合 ad
  • centos系统elasticseach安装

    Elasticsearch 是一个分布式可扩展的实时搜索和分析引擎 一个建立在全文搜索引擎 Apache Lucene 基础上的搜索引擎 当然 Elasticsearch 并不仅仅是 Lucene 那么简单 它不仅包括了全文搜索功能 还可以
  • Python堆积条形图、双轴图、多子图、圆圈热力图示例

    准备工作 使用Python绘图首先需要导入需要的库 并确保中文和负号的正常显示 import os import xlrd import pandas as pd import numpy as np import matplotlib p
  • 了解在Linux系统下不同Shell介绍以及切换

    了解在Linux系统下不同Shell介绍以及切换 引言 在Linux系统中 Shell是用户与操作系统内核之间的接口 它是一个命令行解释器 用于执行用户输入的命令并与操作系统进行交互 在Linux中 常见的Shell包括zsh bash f
  • 用js实现二分查找法

    二分查找法 二分查找也称折半查找 Binary Search 它是一种效率较高的查找方法 但是 折半查找要求线性表必须采用顺序存储结构 而且表中元素按关键字有序排列 function binarySearch arr target let
  • Leetcode错题本1-实现一个 atoi 函数,使其能将字符串转换成整数。

    题目描述 请你来实现一个 atoi 函数 使其能将字符串转换成整数 首先 该函数会根据需要丢弃无用的开头空格字符 直到寻找到第一个非空格的字符为止 接下来的转化规则如下 如果第一个非空字符为正或者负号时 则将该符号与之后面尽可能多的连续数字
  • 【已解决】微信小程序调用方法说找不到 undefined

    问题 在另一个方法里面调用方法报错 说方法找不到 那大多数人都会意识到是this指针的问题 但是我明明加了es6语法 应该可以获取到this的啊 整个世界都迷幻了 桥豆麻袋 找到问题了 this指针的操作要在函数一开始就操作 很明显我下面调
  • 2023年最常见中高级Android面试题全解析,看完碾压面试官!!!

    最近正值秋招 一直在给公司招聘Android程序员 我从 2015 年做 TeamLeader 开始就习惯性的收集平时遇到的 Android技术问题或周围朋友见过的面试题 经过不断筛选 终于凝练成一套实用的小题库 题库中所有的问题请看下文
  • 抽象方法与抽象类 --笔记

    抽象方法 只有方法名 参数表和返回值 没有方法体 既然抽象方法没有方法体 那么也就不能被执行 如果某个类含有抽象方法 那么这个类必须定义为抽象类 即在类定义前用关键字abstract修饰 但需要注意 一个抽象类可以没有抽象方法 抽象类没有具