【精选】Java面向对象进阶——接口

🍬 博主介绍

👨‍🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~
✨主攻领域:【渗透领域】【应急响应】 【Java】 【VulnHub靶场复现】【面试分析】
🎉点赞➕评论➕收藏 == 养成习惯(一键三连)😋
🎉欢迎关注💗一起学习👍一起讨论⭐️一起进步📝文末有彩蛋
🙏作者水平有限,欢迎各位大佬指点,相互学习进步!


目录

接口的定义和使用

练习

编写带有接口和抽象类的标准JavaBean类

代码


接口的定义和使用

  • 接口用关键字interface来定义

    public interface 接口名{}

  • 接口不能实例化

  • 接口和类之间是实现关系,通过implements关键字表示

    public class 类名implements 接口名 {}

  • 接口的子类(实现类)

    要么重写接口中的所有抽象方法

    要么是抽象类

注意1:接口和类的实现关系,可以单实现,也可以多实现。 public class 类名implements 接口名1,接口名2 {}

注意2:实现类还可以在继承一个类的同时实现多个接口。

public class 类名 extends 父类 implements 接口名1,接口名2 {}

练习

编写带有接口和抽象类的标准JavaBean类

青蛙 属性:名字,年龄 行为:吃虫子,蛙泳

狗 属性:名字,年龄 行为:吃骨头,狗刨

兔子 属性:名字,年龄 行为:吃胡萝卜

代码

父类:animal

package demon5;

public abstract class animal {
    private String name;
    private int age;

    public animal() {
    }

    public animal(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    //吃东西,每个动物吃的不一样,所以利用抽象
    public abstract void eat();
}

接口:swim

package demon5;

public interface swim {
    public void swim();
}

子类:rabbit

package demon5;

public class rabbit extends animal{
    public rabbit() {
    }

    public rabbit(String name, int age) {
        super(name, age);
    }

    @Override
    public void eat() {
        System.out.println("兔子在吃胡萝卜");
    }
}

子类:frog

package demon5;

public class frog extends animal implements swim{
    public frog() {
    }

    public frog(String name, int age) {
        super(name, age);
    }

    @Override
    public void eat() {
        System.out.println("青蛙在吃虫子");
    }

    @Override
    public void swim() {
        System.out.println("青蛙在蛙泳");
    }
}

子类:dog

package demon5;

public class dog extends animal implements swim{
    public dog() {
    }

    public dog(String name, int age) {
        super(name, age);
    }

    @Override
    public void eat() {
        System.out.println("狗在吃骨头");
    }

    @Override
    public void swim() {
        System.out.println("狗在狗刨");
    }
}

测试类:test

package demon5;

public class test {
    public static void main(String[] args) {
        //创建对象
        frog f = new frog("小青",3);
        System.out.println(f.getName()+ "," + f.getAge());
        f.eat();
        f.swim();

        rabbit r = new rabbit("小白",2);
        System.out.println(r.getName()+ "," + r.getAge());
        r.eat();
//        r.swim();
    }
}

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

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

相关文章

(11)Hive调优——explain执行计划

一、explain查询计划概述 explain将Hive SQL 语句的实现步骤、依赖关系进行解析,帮助用户理解一条HQL 语句在底层是如何实现数据的查询及处理,通过分析执行计划来达到Hive 调优,数据倾斜排查等目的。 官网指路: https://cwiki.ap…

第14讲投票帖子详情实现

投票帖子详情实现 后端,根据id查询投票帖子信息: /*** 根据id查询* param id* return*/ GetMapping("/{id}") public R findById(PathVariable(value "id")Integer id){Vote vote voteService.getById(id);WxUserInfo wxUserInfo wxUserInf…

【Go语言】第一个Go程序

第一个 Go 程序 1 安装 Go Go语言官网:Download and install - The Go Programming Language,提供了安装包以及引导流程。 以 Windows 为例,进入windows安装包下载地址:All releases - The Go Programming Language&#xff0c…

BDD - Python Behave 用户自定义配置文件

BDD - Python Behave 用户自定义配置文件 引言默认 behave.ini 配置文件自定义配置文件json 格式的配置文件ini 格式的配置文件 实例应用项目结构代码BDD/Features/user_data.feature 文件BDD/steps/user_data_steps.py 文件BDD/environment.py 文件默认配置文件 behave.ini自定…

构建智慧交通平台:架构设计与实现

随着城市交通的不断发展和智能化技术的迅速进步,智慧交通平台作为提升城市交通管理效率和水平的重要手段备受关注。本文将探讨如何设计和实现智慧交通平台的系统架构,以应对日益增长的城市交通需求,并提高交通管理的智能化水平。 ### 1. 智慧…

Spring 用法学习总结(二)之基于注解注入属性

Spring学习 5 基于注解方式创建对象6 基于注解注入属性 5 基于注解方式创建对象 注解是代码的特殊标记,可以简化xml配置,格式:注解名称(属性名称属性值),可以作用在类、方法、属性上 以下注解都可以创建bean实例 Com…

【Qt】qt常用控件之QIcon 以及 qrc机制设置图片路径(QtCreator)

文章目录 1. QIcon / windowIcon2. setIcon() 与 setwindowIcon()2.1 setIcon() 介绍与使用2.2 setWindowIcon 介绍与使用 3. 路径问题 & qrc机制的引入3.1 绝对路径 / 相对路径 的问题3.2 qrc机制3.3 在QtCreator下利用qrc机制引入图片 1. QIcon / windowIcon QIcon QIco…

Java学习第十四节之冒泡排序

冒泡排序 package array;import java.util.Arrays;//冒泡排序 //1.比较数组中,两个相邻的元素,如果第一个数比第二个数大,我们就交换他们的位置 //2.每一次比较,都会产生出一个最大,或者最小的数字 //3.下一轮则可以少…

009集——磁盘详解——电脑数据如何存储在磁盘

很多人也知道数据能够保存是由于设备中有一个叫做「硬盘」的组件存在,但也有很多人不知道硬盘是怎样储存这些数据的。这里给大家讲讲其中的原理。 首先我们要明白的是,计算机中只有0和1,那么我们存入硬盘的数据,实际上也就是一堆0…

WMS仓库管理系统:一文掌握,不懂的的看过来。

本期B端系统扫盲带来WMS系统,这个的应用也非常常见,贝格前端工场力争用浅显的语言将此系统介绍清楚,如有系统升级和定制需求的可以单独沟通,闲言少叙开整。 一、WMS系统的定义 WMS是Warehouse Management System的缩写&#xff…

平时积累的FPGA知识点(9)

平时在FPGA群聊等积累的FPGA知识点,第9期: 31 ldpc的license是什么? 解释:Xilinx公司的Zynq UltraScale RFSoC系列芯片进行项目开发,在某些芯片型号中,自身带有SD-FEC硬核资源,具体查询方式&a…

算法学习——LeetCode力扣贪心篇4

算法学习——LeetCode力扣贪心篇4 763. 划分字母区间 763. 划分字母区间 - 力扣(LeetCode) 描述 给你一个字符串 s 。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。 注意,划分结果需要满足&#xf…

找负环(图论基础)

文章目录 负环spfa找负环方法一方法二实际效果 负环 环内路径上的权值和为负。 spfa找负环 两种基本的方法 统计每一个点的入队次数,如果一个点入队了n次,则说明存在负环统计当前每个点中的最短路中所包含的边数,如果当前某个点的最短路所…

MySQL数据库基础(三):Linux系统下的MySQL安装与使用

文章目录 Linux系统下的MySQL安装与使用 一、MySQL部署安装 1. 卸载自带的MySQL8 2. 删除自带配置文件 3. 下载MySQL源 4. 安装MySQL源 5. 使用yum安装MySQL 6. 获取默认密码 7. 登录MySQL 8. 修改密码 二、登陆MySQL数据库 1、本地(针对本地MySQL&…

备战蓝桥杯---数据结构之好题分享1

最近几天在刷学校的题单时,发现了几道十分巧妙又有启发性的题,借此来记录分享一下。 看题: 从整体上看似乎没有什么规律,于是我们从小地方入手,下面是图解: 因此,我们用栈的数据结构实现即可&a…

[职场] 求职如何设置预期 #笔记#经验分享

求职如何设置预期 在求职的道路上,无论处于哪个年龄阶段,合理的就业期望值才能使我们的愿望与社会的需求相吻合,才能让自己在今后的工作中发挥出最大的实力与能力。 一、结合测评软件,明确求职目标 根据霍兰德职业兴趣测试结果&a…

Sibelius安装包免费下载激活指南,西贝柳斯,专业作曲打谱软件

Sibelius来自芬兰音乐巨匠西贝柳斯的故乡,被誉为世界上最强的五线谱软件。Sibelius功能全面、音色音质精准受到广大作曲家的喜爱。其乐谱记号十分全面,所有的乐谱都可以应付自如,Sibelius可以迅速完成作曲、编曲、发布任务,轻松开…

『运维备忘录』之 Zip 命令详解

运维人员不仅要熟悉操作系统、服务器、网络等只是,甚至对于开发相关的也要有所了解。很多运维工作者可能一时半会记不住那么多命令、代码、方法、原理或者用法等等。这里我将结合自身工作,持续给大家更新运维工作所需要接触到的知识点,希望大…

07MARL经典算法 Policy-Based Learning

文章目录 前言一、基于策略方法的提出二、普遍的梯度上升的更新方法 前言 MARL基础算法第三类基于策略的学习 一、基于策略方法的提出 目前为止方法总体就是评估价值函数,基于价值函数更新策略,这些方法都具有一定的限制,如JAL-SG不能有效收…

JVM对象创建与内存分配机制深度剖析

对象的创建 对象创建的主要流程: 1.类加载检查 虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,那必须先执行相应的类…