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{
    @Override
    public 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);
    }
    @Override
    public 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
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Redis-Redis 高级数据结构 HyperLogLog与事务

Redis 高级数据结构 HyperLogLog HyperLogLog(Hyper [ˈhaɪpə(r)] ) 并不是一种新的数据结构 ( 实际类型为字符串类 型) ,而是一种基数算法 , 通过 HyperLogLog 可以利用极小的内存空间完成独立总数的统计,数据集可以是 IP 、 Email 、 ID 等。 如…

科研学习|论文解读——Deep learning for anomaly detection in log data: a survey

摘要 自动日志文件分析能够及早发现系统故障等相关事件。特别是,自学习异常检测技术能够捕捉日志数据中的模式,然后向系统操作员报告意外的日志发生,而无需提前提供或手动建模异常场景。最近,越来越多的利用深度学习方法来实现此目…

损失函数与反向传播

计算l1loss mseloss import torch from torch.nn import L1Loss from torch import nninputs torch.tensor([1,2,3],dtypetorch.float32) targets torch.tensor([1,2,5],dtypetorch.float32)inputs torch.reshape(inputs,(1,1,1,3)) targets torch.reshape(targets,(1,1,1…

蓝桥杯第199题 扫地机器人 暴力优化 二分法 简单题 C++

题目 扫地机器人 - 蓝桥云课 (lanqiao.cn)https://www.lanqiao.cn/problems/199/learning/?page1&first_category_id1&name%E6%89%AB%E5%9C%B0%E6%9C%BA%E5%99%A8%E4%BA%BA 思路和解题方法 首先,通过cin语句输入了终点位置n和障碍物数量k。使用一个数组a来…

element-plus el-dialog 弹窗隐藏遮罩并且可以控制弹窗后的元素、点击、滚动、其他事件操作等

场景 el-dialog 隐藏遮罩并且可以控制弹窗后的元素、点击、滚动、其他事件操作,比如一个弹窗打开了,我要能控制弹窗后面的滚动、点击等等一系列事件。 修改方法 首先我们需要隐藏弹窗遮罩 :modal"false",并且给 el-dialog 弹窗…

C语言基础--#if与#endif

目录 一、C语言中的 #if()和 #end if 用法 1. #if 表达式 程序段 #endif 形式 2. #ifdef标示符 标识符 #endif 形式 3. #if 0/ #if 1 #endif 形式 4. \可用于一行的结尾,表示本行与下一行连接起来 二、xTaskCreate函数 三、指针相关…

Java容器合集

目录 浅谈 Array数组 初始化(动与静) 动态初始化 静态初始化 CRUD 增 查 索引取值 遍历 改 删 走进底层 栈与堆 一个数组的诞生 多数组 避坑指南 索引越界 空指针异常 小试牛刀 Collection List部落 介绍和特点 方法 ArrayList 介绍 方法 遍历 Li…

docker搭建node环境开发服务器

docker搭建node环境开发服务器 本文章是我自己搭建node环境开发服务器的过程记录,不一定完全适用所有人。根据个人情况,按需取用。 命名项目路径 为了方便cd到项目路径,将项目路径重命名,方便输入。 vim /etc/profile # 修改p…

创建Asp.net MVC项目Ajax实现视图页面数据与后端Json传值显示

简述回顾 继上篇文章创建的mvc传值这里说明一下Json传值。在mvc框架中,不可避免地会遇到前台传值到后台,前台接收后台的值的情况(前台指view,后台指controller),有时只需要从控制器中返回一个处理的结果&a…

Steps步骤条(antd-design组件库)简单用法

1.Steps步骤条 引导用户按照流程完成任务的导航条。 2.何时使用 当任务复杂或者存在先后关系时,将其分解成一系列步骤,从而简化任务。 组件代码来自: 步骤条 Steps - Ant Design 3.本地验证前的准备 参考文章【react项目antd组件-demo:hello-…

用bat制作图片马——一句话木马

效果图 代码 ECHO OFF TITLE PtoR MODE con COLS55 LINES25 color 0A:main cls echo.当前时间:%date% %time% echo.欢迎使用图片马制作工具 echo.请确保图片和php在同一路径下 echo.echo 请将图像文件拖放到此窗口并按 Enter: set /p "imagefile&q…

项目demo —— GPT 聊天机器人

本文介绍我的开源项目 TelegramChatBot,这是一个基于 OpenAI GPT API 开发的 telegram 机器人,具有多模态交互能力,求 star!感谢大家!在 telegram jokerController_bot 立即体验!欢迎对 GPT 应用开发或对 t…

SQL server-excel数据追加到表

参考文章:SQL server 2019 从Excel导入数据_mssql2019 导入excel数据-CSDN博客 将excel数据导入到SQL server数据库的详细过程 注意:第一行数据默认为数据库表中的字段,所以这个必须要有,否则无法映射导入 问题1:ADD…

如何使用阿里云虚拟主机和域名设置网站?

本文档将向您展示如何使用阿里云虚拟主机来设置一个新网站,并完成一个域名。如果您按照此处的步骤操作,您将启动并运行一个新网站,可以使用您选择的名称在全球范围内访问,并托管在阿里云平台上。 本文档假设您已经拥有有效的阿里…

Python爬虫遇到重定向URL问题时如何解决?

什么是重定向 重定向是指当用户请求一个URL时,服务器返回一个中断请求的URL的响应。这种情况通常发生在网站对URL进行了修改或者重定向到其他页面的情况下。其中,如果处理不当开发,可能会导致爬虫无法获取所需的数据,从而影响爬虫…

基于SSM的仓库管理系统的设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是 目录…

CentOS7安装RabbitMQ

服务器系统版本:CentOS7 安装RabbitMq版本:3.7.18 将此安装包目录下的两个文件上传到服务/usr/local/rabbitmq中备用。 安装Erlang依赖包 rpm -ivh erlang-22.0.7-1.el7.x86_64.rpm安装RabbitMQ安装包(需要联网) yum install -y rabbitmq-server-3.7.1…

Message全局提示(antd-design组件库)简单用法

1.Message全局提示 全局展示操作反馈信息。 2.何时使用 可提供成功、警告和错误等反馈信息。 顶部居中显示并自动消失,是一种不打断用户操作的轻量级提示方式。 组件代码来自: 全局提示 Message - Ant Design 3.本地验证前的准备 参考文章【react项目ant…

【LeetCode】101. 对称二叉树

101. 对称二叉树 难度:简单 题目 给你一个二叉树的根节点 root , 检查它是否轴对称。 示例 1: 输入:root [1,2,2,3,4,4,3] 输出:true示例 2: 输入:root [1,2,2,null,3,null,3] 输出&#…

Java高级技术(注解)

一,注解 二,案例 三,注解原理 四,元注解 五,案例 六,解析注解 七,案例