Java---抽象类讲解

文章目录

    • 1. 抽象类概述
    • 2. 抽象类特点
    • 3. 抽象类的成员特点
    • 4. 抽象类猫狗应用


1. 抽象类概述

 在Java中,一个没有方法体的方法应该定义为抽象方法;而类中如果有抽象方法,该类必须定义为抽象类。

在这里插入图片描述

在这里插入图片描述

2. 抽象类特点

 1. 抽象类和抽象方法必须使用abstract关键字修饰。

  • public abstract class 类名{};
  • public abstract void eat();

 2. 抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类。

 3. 抽象类不能实例化。抽象类如何实例化呢?参照多态的方式,通过子类对象实例化,这叫抽象类多态。

 4. 抽象类的子类要么重写抽象类中的所有抽象方法,要么是抽象类。

public abstract class Animal {public abstract void eat();public void sleep(){System.out.println("在睡觉");}
}public class Cat extends Animal{@Overridepublic void eat() {System.out.println("猫吃鱼");}
}public class Demo {public static void main(String[] args) {Animal a=new Cat();//编译看左边,执行看右边a.eat(); //猫吃鱼a.sleep();//在睡觉}
}

3. 抽象类的成员特点

 1. 成员变量:可以是常量,也可以是变量。

 2. 构造方法:有构造方法,但是不能实例化。它用于子类访问父类数据的初始化。

 3. 成员方法:可以有抽象方法,限定子类必须完成某些动作。也可以有非抽象方法,用于继承以提高代码复用性。

4. 抽象类猫狗应用

public abstract class Animal {private int age;private String name;public Animal(){}public Animal(String name,int age) {this.name = name;this.age = age;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public abstract void eat();
}public class Cat extends Animal{public Cat(){}public Cat(String name,int age){super(name,age);}@Overridepublic void eat() {System.out.println("猫吃鱼");}
}public class Demo {public static void main(String[] args) {//这就是向上转型Animal a=new Cat("加菲猫",5);System.out.println(a.getName()+" "+a.getAge()); // 输出:加菲猫 5}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/232004.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关键词挖掘软件-免费批量挖掘关键词的工具

在当今数字化时代,网站的曝光和排名对于吸引流量至关重要。而在这个大数据的背后,SEO(Search Engine Optimization,搜索引擎优化)成为许多网站主和创作者们追逐的关键。在SEO的世界里,关键词的选择和优化是…

从源代码出发,Jenkins 任务排队时间过长问题的解决过程

最近开发了一个部署相关的工具,使用 Jenkins 来构建应用。Jenkins 的任务从模板中创建而来。每次部署时,通过 Jenkins API 来触发构建任务。在线上运行时发现,通过 API 触发的 Jenkins 任务总是会时不时在队列中等待较长的时间。某些情况下的…

二阶龙格塔库积分法求解混沌产生方程(求助)

最近论文中常常接触到激光产生混沌的方程,激光器作为非线性元件,在信息处理中具有非常大的潜力,其中激光产生混沌应用在通信中很有用处。论文中对于模拟数据部分,采用了以下公式来产生混沌:以此公式产生混沌的方法应用…

React Native 更换淘宝镜像提升包下载速度

React Native 更换淘宝镜像提升包下载速度 每次运行项目的时候都是卡在包下载的命令上,每次一等就要 1h20m 极度崩溃,那是因maven镜像源为Google导致无法正常下载。 那么我们就可以切换maven镜像源,方法如下: 找到项目下的**/an…

《尚品甄选》:后台系统——分类品牌和规格管理(debug一遍)

文章目录 一、分类品牌管理1.1 表结构介绍1.2 列表查询1.3 添加功能1.4 修改功能1.5 删除功能 二、商品规格管理2.1 表结构介绍2.2 列表查询2.3 添加功能2.4 修改功能2.5 删除功能 一、分类品牌管理 分类品牌管理就是将分类的数据和品牌的数据进行关联,分类数据和品…

【LeetCode刷题】-- 78.子集

78.子集 class Solution {public List<List<Integer>> subsets(int[] nums) {List<List<Integer>> ans new ArrayList<>();List<Integer> list new ArrayList<>();dfs(0,nums,ans,list);return ans;}private void dfs(int cur,int…

泛微OA对接金蝶云星空方案分享(对接场景解析)

分享金蝶云星空跟泛微OA系统集成对接的方案分享&#xff0c;主讲审批流程对接&#xff0c;表单对接的两类场景。分别是金蝶云星空发起申请和泛微发起流程审批&#xff0c;最终实现统一管理。 数据集成主要有以下好处&#xff1a; &#xff08;1&#xff09;数据一致性&#xf…

4、RTC 实时时钟Demo(STM32F407)

RTC是个独立的BCD定时器/计数器。RTC 提供一个日历时钟&#xff0c;两个可编程闹钟中断&#xff0c;以及一个具有中断功能的周期性可编程唤醒标志。RTC还包含用于管理低功耗模式的自动唤醒单元。 (RTC实质&#xff1a;一个掉电(主电源)后还继续运行(由VBAT供电)的32位的向上计…

25. 深度学习进阶 - 权重初始化,梯度消失和梯度爆炸

文章目录 权重初始化梯度消失与梯度爆炸 Hi&#xff0c;你好。我是茶桁。 咱们这节课会讲到权重初始化、梯度消失和梯度爆炸。咱们先来看看权重初始化的内容。 权重初始化 机器学习在我们使用的过程中的初始值非常的重要。就比如最简单的wxb&#xff0c;现在要拟合成一个yha…

vue+el-tooltip 封装提示框组件,只有溢出才提示

效果 封装思路 通过控制el-tooltip的disabled属性控制是否提示通过在内容上绑定mouseenter事件监听内容宽度和可视宽度&#xff0c;判断内容是否溢出 封装代码 <template><div style"display: flex" class"column-overflow"><el-tooltip…

使用idea中的Live Templates自定义自动生成Spring所需的XML配置文件格式

文章目录 一、引言&问题描述二、解决方案 一、引言&问题描述 在使用Spring来管理对象时&#xff0c;我们需要创建Spring的配置文件applicationContext.xml&#xff0c;如下图位置&#xff1a; 在resources目录下选择new->File 或 使用idea自带模板new->XML Con…

WebSocket 接口测试:打通前端与后端的通信之路!

什么是 WebSocket? WebSocket 是一种基于在单个 TCP 连接上进行全双工通信的协议&#xff0c;解决了HTTP协议不适用于实时通信的缺点&#xff0c;相较于 HTTP 协议&#xff0c;WebSocket 协议实现了持久化网络通信&#xff0c;可以实现客户端和服务端的长连接&#xff0c;能够…