Java—方法重写

Java—方法重写什么是方法重写 overriding 子类根据需求从父类继承的方法进行重新编写重写是 可以使用 super 方法的方式来保留父亲的方法构造方法不能被重写举个栗子 如果父类中有个输出宠物姓名和年龄的方法 但是要求输出狗的品种和猫的声音那么到底怎么重写呢 话不多说 上代码 Animal 作为父类 有这动物的共有属性 名字和年龄 并且有 print 方法输出动物的信息 publiccla

什么是方法重写(overriding)?

  1. 子类根据需求从父类继承的方法进行重新编写
  2. 重写是,可以使用super.方法的方式来保留父亲的方法
  3. 构造方法不能被重写
public class Animal { private String name; private int age; public void setName(String name) { this.name = name; } public String getName() { return name; } public void setAge(int age) { this.age = age; } public int getAge() { return age; } public void print(String name, int age) { this.name = name; this.age = age; } } 

Cat继承Animal,拥有自己的特有属性voice

public class Cat extends Animal{ private String voice; public void setVoice(String voice) { this.voice = voice; } public String getVoice() { return voice; } public Cat(String voice) { this.voice = voice; } public void print(String name, int age) { super.print(name, age);//使用super.print保留父类的方法 System.out.println("宠物的名字是:"+getName()+"年龄:"+getAge()+"岁 我会"+getVoice()); } } 

Dog继承Animal,同时有自己的特有属性:Strain

public class Dog extends Animal{ private String strain; public void setStrain(String strain) { this.strain = strain; } public String getStrain() { return strain; } public Dog(String strain) { this.strain = strain; } public void print(String name, int age) { super.print("阿黄",7); this.strain = "哈士奇"; System.out.println("宠物的名字是:"+name+"年龄:"+age+"岁 品种是:"+getStrain()); } } 

最后输出的结果就是一开始的图

方法重写的规则

  • 方法名相同
  • 参数列表相同(数量,顺序,数据类型)
  • 如果有返回值,返回值相同或者是其子类
  • 访问权限不能严于父类
  • 父类的静态方法不能被重写为非静态方法,反之父类的非静态方法不能被重写为静态方法
  • 子类可以定义与父类同名的静态方法,以便在子类中隐藏父类的静态方法(静态方法中无法使用super、this)
  • 父类的私有方法不能被子类重写(private修饰的)
  • 不能抛出比父类更多的异常(这是啥?学了异常你就知道了)

PS:静态方法中不能使用super、this关键字,this指向本类中已存在的对象,super是对父类对象的引用,指向父类对象,而静态方法是优先于对象的,所以在静态方法中使用super、this时,由于指向的对象晚于静态方法出现,所以指向的是啥也没有

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/211632.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午9:59
下一篇 2026年3月18日 下午9:59


相关推荐

  • speedup scaleup sizeup

    speedup scaleup sizeup并行算法通常包含三种评价的方法,用来评价算法各方面的优劣。1.speedup评测speedup的方法是,保持数据不变,增加计算机的数目。计算机数目为m时的speedup计算方法如下:speedup(m)=在一台机器上面使用的时间/在m台机器上面使用的时间。该评测指标,如果能够随着m保持一个线性的增长,则表示,多台机器能够很好的缩短所需时间。然而,线性的s

    2025年8月4日
    4
  • 华为太极magisk安装教程_教程:如何升级太极内部的应用

    华为太极magisk安装教程_教程:如何升级太极内部的应用使用过太极的小伙伴都知道,要把应用添加到太极(magisk版除外)中是个麻烦事儿:首先得花费大量的时间来创建应用,然后还必须卸载原来的应用,安装完毕之后又要花很长的时间来优化。如果待创建的应用安装包比较大并且你手机的CPU不在工作状态,那这个流程就不是一般的长了。这时候就有童鞋会问了,如果我在太极里面创建的应用要升级了怎么办?是不是每次升级都需要卸载原应用?实际上,在太极内部升级应用…

    2022年6月3日
    165
  • dpois函数_frequency函数

    dpois函数_frequency函数https://r4ds.had.co.nz/transform.htmlgroupedsummarieswithsummarise5.6通过进行分组概括将数据框折叠为单行:除非我们

    2022年8月5日
    6
  • 教你win10系统显卡驱动安装失败的解决方法

    教你win10系统显卡驱动安装失败的解决方法我们日常在对电脑的使用过程中,经常都会遇到这样或那样的问题。比如说win10系统显卡驱动安装失败该怎么办呢?别着急,还有小编在呢?接下来小编就来告诉大家win10电脑系统显卡驱动安装失败怎么解决。详细教你win10系统显卡驱动安装失败怎么办:方法一,删除之前的显卡驱动文件重新安装1,首先,右键点击“此电脑”,菜单栏选择“管理”。2,进入计算机管理界面后,点击“设备管理器”,然后在界面右侧展开“显示适配器”选项,并右键点击显卡驱动程序,菜单栏选择“属性”下一步。3,点击“卸载设备”。4,显卡

    2022年6月13日
    36
  • Linux运行c#_在控制台运行一个java程序

    Linux运行c#_在控制台运行一个java程序1、创建控制台程序如上图所示,选择语言为linux,我用的VS2019,.Net5.0,一直点下一步,创建。2、创建TCP服务端程序usingLinuxTcpApp.TcpServer;usingSystem;usingSystem.Net;namespaceLinuxTcpApp{classProgram{privatestaticAsyncTcpServertcpServer;staticvoidMain(s

    2025年9月5日
    10
  • eclipse配置android_零基础电脑初学者入门教程

    eclipse配置android_零基础电脑初学者入门教程Eclipse Android开发入门手册 资源下载http://tools.android-studio.orgjdk,AndroidSDK,开发工具eclipse、Androidstudio、idea  配置java环境搜索jdk安装对应的包,参照http://www.runoob.com/java/java-environment-setup.html  配置环境 安装eclipse和A…

    2022年10月4日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号