继承与多态(Java实现)

2023-11-02

继承和多态
一,类的继承
1,继承的实现
语法格式:
class 子类名 extends 父类名{
类体
}
注:extends是关键字,Java中只支持单继承,所以子类只有一个父类,但可以多层继承,子类通过继承可以获得父类的public,protected,default成员变量和方法,但是不能获得private的成员变量和方法

class A{
    public int i;
    A(){
        System.out.println("大猫猫正在吃喵粮");
    }
    void showi(){
        System.out.println("i =" + i);
    }
}
class B extends A{
    B(){
        System.out.println("小喵喵正在睡觉");
    }
    public int j;
    void show(){
        System.out.println("j =" + j);
        showi();
    }
}
public class Test {
    public static void main(String[] args) {
        A a = new A();
        B b = new B();
        a.i = 10;//对父类成员变量赋值
        a.showi();
        b.i = 12;
        b.j = 20;//对子类成员变量赋值
        b.show();
    }
}

分析:
一个子类可以从父类继承所有成员变量和方法,但不能继承构造方法,要得到构造方法;1,重写构造方法 2,不写构造方法
2,继承和重写
方法重写:在继承关系中,子类定义和父类相同方法名,参数个数类型,返回值都相同的方法

class A1{
    public int m = 5;
    public int n = 6;
    void show(){
        System.out.println("result =" + (m+n));
    }
}
class B1 extends A1{
    public int m = 10;
    void show(){  //方法重写
        System.out.println("result =" + (m*n));
    }
}
public class Fun {
    public static void main(String[] args) {
        A1 a = new A1();
        B1 b = new B1();
        a.show();//调用父类的show方法
        b.show();//调用子类show方法
    }
}

注:如果想在子类中访问父类被覆盖成员,使用super关键字
格式:
super.成员变量
super.成员方法(参数列表)
访问父类构造方法:super(参数列表)

二,多态性
1,多态性的概念
多态性就是一个名称可以对应多种不同的实现方法,体现在两个方面:编译多态和运行多态
多态的本质:向上转型和重写
向上转型语法:
1)直接赋值
父类 对象名 = new 子类()
2)方法传参
在方法传参设置共同父类,fun只定义一次
fun(父类名 ,“食物”)
3)方法返回值
public static Animal fun(){
Brid brid = new Brid(“喵喵”);
return bird;
}
2,实用案例

class Animal {// 继承访问权限
    public String name;
    // 继承方法
    Animal(String name) {
        this.name = name;
    }
    public void eat(String food) {
        System.out.println(this.name + "正在吃" + food);
    }
    public void fun() {
        System.out.println("Animal的fun方法");
    }
}
class Bird extends Animal{
    Bird(String name) {
        super(name);
    }
    //方法重写
    public void fun() {
        System.out.println("Bird的fun方法");
    }
    public void eat(String food) {
        System.out.println("一只小鸟"+this.name + "正在吃"+food);
    }
}
public class Test1 {
    public static void main(String[] args) {
        Animal a1 = new Animal("圆圆");
        a1.fun();
        // 向上转型
        Animal bird = new Bird("娃哈哈" );
        bird.fun();
    }
}

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

继承与多态(Java实现) 的相关文章

  • Java中ArrayList的交集和并集

    有什么方法可以做到这一点吗 我正在寻找 但没有找到 另一个问题 我需要这些方法 以便我可以过滤文件 有些是AND过滤器 有些是OR过滤器 就像集合论中的那样 所以我需要根据所有文件和保存这些文件的联合 相交 ArrayList 进行过滤 我
  • Gradle 构建错误:无法从 https://repo1.maven.org/maven2/io/fabric/tools/gradle/maven-metadata.xml 加载 Maven 元数据

    我在 Android studio 中遇到 gradle 构建错误 如下所示 Error A problem occurred configuring project MyApp Could not resolve all dependen
  • 日期语句之间的 JPQL SELECT [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我想将此 SQL 语句转换为等效的 JPQL SELECT FROM events WHERE events date BETWE
  • Spring应用中Eureka健康检查的问题

    我正在开发一个基于 Spring 的应用程序 其中包含多个微服务 我的一个微服务充当尤里卡服务器 到目前为止一切正常 在我所有其他微服务中 用 EnableEurekaClient 我想启用这样的健康检查 应用程序 yml eureka c
  • Java 枚举与创建位掩码和检查权限的混淆

    我想将此 c 权限模块移植到 java 但是当我无法将数值保存在数据库中然后将其转换为枚举表示形式时 我很困惑如何执行此操作 在 C 中 我创建一个如下所示的枚举 public enum ArticlePermission CanRead
  • 为什么 JTables 使 TableModel 在呈现时不可序列化?

    所以最近我正在开发一个工具 供我们配置某些应用程序 它不需要是什么真正令人敬畏的东西 只是一个具有一些 SQL 脚本生成功能并创建几个 XML 文件的基本工具 在此期间 我使用自己的 AbstractTableModel 实现创建了一系列
  • 为 java 游戏创建交互式 GUI

    大家好 我正在创建一个类似于 java 中的 farmville 的游戏 我只是想知道如何实现用户通常单击以与游戏客户端交互的交互式对象 按钮 我不想使用 swing 库 通用 Windows 看起来像对象 我想为我的按钮导入自定义图像 并
  • HSQL - 识别打开连接的数量

    我正在使用嵌入式 HSQL 数据库服务器 有什么方法可以识别活动打开连接的数量吗 Yes SELECT COUNT FROM INFORMATION SCHEMA SYSTEM SESSIONS
  • jQuery AJAX 调用 Java 方法

    使用 jQuery AJAX 我们可以调用特定的 JAVA 方法 例如从 Action 类 该 Java 方法返回的数据将用于填充一些 HTML 代码 请告诉我是否可以使用 jQuery 轻松完成此操作 就像在 DWR 中一样 此外 对于
  • 在 Jar 文件中运行 ANT build.xml 文件

    我需要使用存储在 jar 文件中的 build xml 文件运行 ANT 构建 该 jar 文件在类路径中可用 是否可以在不分解 jar 文件并将 build xml 保存到本地目录的情况下做到这一点 如果是的话我该怎么办呢 Update
  • 当 OnFocusChangeListener 应用于包装的 EditText 时,TextInputLayout 没有动画

    不能比标题说得更清楚了 我有一个由文本输入布局包裹的 EditText 我试图在 EditText 失去焦点时触发一个事件 但是 一旦应用了事件侦听器 TextInputLayout 就不再对文本进行动画处理 它只是位于 editText
  • tomcat 中受密码保护的应用程序

    我正在使用 JSP Servlet 开发一个Web应用程序 并且我使用了Tomcat 7 0 33 as a web container 所以我的要求是tomcat中的每个应用程序都会password像受保护的manager applica
  • 如何对不同的参数类型使用相同的java方法?

    我的问题 我有 2 个已定义的记录 创建对象请求 更新对象请求 必须通过实用方法进行验证 由于这两个对象具有相同的字段 因此可以对这两种类型应用相同的验证方法 现在我只是使用两种方法进行重载 但它很冗长 public record Crea
  • logcat 中 mSecurityInputMethodService 为 null

    我写了一点android应显示智能手机当前位置 最后已知位置 的应用程序 尽管我复制了示例代码 并尝试了其他几种解决方案 但似乎每次都有相同的错误 我的应用程序由一个按钮组成 按下按钮应该log经度和纬度 但仅对数 mSecurityInp
  • 如何使用 jUnit 将测试用例添加到套件中?

    我有 2 个测试类 都扩展了TestCase 每个类都包含一堆针对我的程序运行的单独测试 如何将这两个类 以及它们拥有的所有测试 作为同一套件的一部分执行 我正在使用 jUnit 4 8 在 jUnit4 中你有这样的东西 RunWith
  • 专门针对 JSP 的测试驱动开发

    在理解 TDD 到底是什么之前 我就已经开始编写测试驱动的代码了 在没有实现的情况下调用函数和类可以帮助我以更快 更有效的方式理解和构建我的应用程序 所以我非常习惯编写代码 gt 编译它 gt 看到它失败 gt 通过构建其实现来修复它的过程
  • Cucumber 0.4.3 (cuke4duke) 与 java + maven gem 问题

    我最近开始为 Cucumber 安装一个示例项目 并尝试使用 maven java 运行它 我遵循了这个指南 http www goodercode com wp using cucumber tests with maven and ja
  • 最新的 Hibernate 和 Derby:无法建立 JDBC 连接

    我正在尝试创建一个使用 Hibernate 连接到 Derby 数据库的准系统项目 我正在使用 Hibernate 和 Derby 的最新版本 但我得到的是通用的Unable to make JDBC Connection error 这是
  • 包 javax.el 不存在

    我正在使用 jre6 eclipse 并导入 javax el 错误 包 javax el 不存在 javac 导入 javax el 过来 这不应该是java的一部分吗 谁能告诉我为什么会这样 谢谢 米 EL 统一表达语言 是 Java
  • 使用 svn 1.8.x、subclise 1.10 的 m2e-subclipse 连接器在哪里?

    我读到 m2e 的生产商已经停止生产 svn 1 7 以外的任何版本的 m2e 连接器 Tigris 显然已经填补了维护 m2e subclipse 连接器的空缺 Q1 我的问题是 使用 svn 1 8 x 的 eclipse 更新 url

随机推荐

  • C51单片机期末复习第八章单片机接口技术

    一 总线 传送同类信息的连线 三总线 地址总线AB 数据总线DB 控制总线CB 目录 ppt给的没啥用 乱还不全 8 1 单片机的系统总线 8 2 简单并行I O口扩展 8 3 可编程并行I O口扩展 8 4 D A转换与DAC0832应用
  • vue 自定义月日历日程组件(MSchedule)

    效果图 组件的使用 日程内容可以自定义 状态对应颜色可以自定义
  • vue 动态组件component标签

    vue 提供了一个内置的
  • python笔记:#013#高级变量类型

    高级变量类型 目标 列表 元组 字典 字符串 公共方法 变量高级 知识点回顾 Python 中数据类型可以分为 数字型 和 非数字型 数字型 整型 int 浮点型 float 布尔型 bool 真 True 非 0 数 非零即真 假 Fal
  • Ubuntu root账户登陆电脑

    vi etc pam d gdm autologin 屏蔽 auth required pam succeed if so user root quiet success vi etc pam d gdm password 屏蔽auth r
  • nextLine().split(“[\\s]“)的意思

    Scanner sc new Scanner System in String a sc nextLine split s 这句话的意思是 把输入的字符串以 s 为条件分割成一个String数组 s表示空格 回车 换行等空白符 当然 单表示
  • 学python的第十五天---简单数论

    模运算 一 刷题统计 二 快速幂 三 RSA解密 GCD LCM 四 核桃的数量 最小公倍数 五 Hankson 的趣味题 六 寻找整数 素数 七 笨小孩 八 质数 九 分解质因数 模运算 ab mod m a mod m b mod m
  • Java实现比较版本号

    涉及到客户端的系统中经常需要用到比较版本号的功能 但是比较版本号又不能完全按照字符串比较的方式去用compareTo之类的方法 这就需要我们总结版本号的通用规则 设计一个比较算法并封装成通用方法来使用 通常版本号如 1 3 20 8 6 8
  • RS-485总线前世今生;

    一 RS232和RS485的区别 RS 232采取的是单端不平衡传输方式 其收发端的数据信号都是相对于地信号的 所以共模抑制能力 差 再加上双绞线分布电容的影响 其最大传输距离仅为15米 最高传输速率只有20kbit s 2560Byte
  • bash脚本调试方法

    本文全面系统地介绍了shell脚本调试技术 包括使用echo tee trap等命令输出关键信息 跟踪变量的值 在脚本中植入调试钩子 使用 n 选项进行shell脚本的语法检查 使用 x 选项实现shell脚本逐条语句的跟踪 巧妙地利用sh
  • Bandizip已管理员身份运行

    系列文章目录 文章目录 系列文章目录 前言 一 Bandzib是什么 二 使用步骤 1 引入库 前言 在解压krita源码包时Bandizip报错 一 Bandzib是什么 bandzip官网 Bandizip 是一款压缩软件 它支持Zip
  • 3D空间堆叠PCB设计 ——PCB线路优化项目总结

    3D空间PCB堆叠设计适用于线路板安装空间狭小场合使用 PCB空间排布大大提高空间利用率更加高效 前言 19年的5月下旬有人找我做一个项目 他们要3块比手掌张开还大的电路板 如下图 优化到可以放入水杯类似的圆柱体中 高度越底越好 这种 主体
  • 利用python爬取招聘网站上的相关岗位信息

    这段代码是一个爬取Boss直聘网站上数据岗位信息的爬虫程序 它使用了异步编程库asyncio和网页自动化测试库pyppeteer来实现异步的网页爬取和数据提取 import asyncio 异步编程库 import random 随机数生成
  • 不用看网课就能学到python的文章(第三天)

    紧接着上一篇不用看网课就能学到python的文章 第二天 Why does it work的博客 CSDN博客 如果说到语句 那我们应该了解一些一些python python最具特色的就是使用缩进来表示代码块 不需要使用大括号 行与缩进 i
  • google Guava之EventBus

    文章目录 EventBus基本用法 1 创建Listener 2 创建EventBus并发送消息 Listener之间的继承关系 Subscriber 不同类型参数的Subscribe event 继承关系的event DeadEvent
  • 树莓派3B安装python3 opencv环境

    树莓派3b 若干年前买的 软件具体配置不记得 python缺省版本为3 53 直接用pip命令安装不成功 显示一堆的红字 update upgrade一下 耗时挺长 再安装 成功了 如下图 sudo apt get update sodu
  • C++11 并发指南系列

    本系列文章主要介绍 C 11 并发编程 计划分为 9 章介绍 C 11 的并发和多线程编程 分别如下 C 11 并发指南一 C 11 多线程初探 本章计划 1 2 篇 已完成 1 篇 C 11 并发指南二 std thread 详解 本章计
  • 微信小程序:cavans的使用(一)

    最近用到这个canvas画布这个组件 其实还是挺有意思的 优点是可以给用户绘制宣传海报什么的 这个现在好多小程序都有这个 比如给你一个专属海报有你的头像还有你的二维码 你可以保存在你的相册里 你可以取拿它去拉人 微信小程序canvas组件官
  • 因为好兄弟一句话竞。。。

    职教云查同学考试成绩 本来在打游戏 好兄弟微信问了我一句职教云未公开的考试能不能 打包好的软件下载地址在文章后面 然后在想 考试未公开 只有那老师能看班里同学成绩 先试了抓一下包 发现在学生端啥也没有只能获得考试的ID 好家伙 突然灵光一闪
  • 继承与多态(Java实现)

    继承和多态 一 类的继承 1 继承的实现 语法格式 class 子类名 extends 父类名 类体 注 extends是关键字 Java中只支持单继承 所以子类只有一个父类 但可以多层继承 子类通过继承可以获得父类的public prot