Java方法重写

这篇具有很好参考价值的文章主要介绍了Java方法重写。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1.什么是方法重写

2.方法重写的规则

3.重写与重载的区别


1.什么是方法重写

重写override,也称为覆盖):在子类中对父类中允许访问的方法实现过程进行重新编写,子类中方法的名称、返回值类型、参数列表与父类相同,只有方法体中的实现不同

2.方法重写的规则

1.子类在重写时,方法名、返回值类型、参数列表要与父类方法一致

例如:定义一个Animal类

public class Animal {
    public void sleep(){
        System.out.println("动物要睡觉");
    }
}

 再定义一个Cat类继承Animal类,并重写其中的sleep方法

public class Cat extends Animal{
    @Override
    public void sleep() {
        System.out.println("猫要睡觉");
    }
}

注:在重写父类中的方法时,可以使用 @Override 注解来显示指示。在重写父类方法时,在方法前面加上 @Override 系统可以帮助我们检查方法的正确性

当出现将方法名拼写错误或是返回值类型与父类不同等问题时,就会编译报错,提示无法构成重写

 2.子类重写方法的访问限定符不能小于父类的访问限定符

class Animal {
    protected void sleep(){
        System.out.println("动物要睡觉");
    }
}

class Cat extends Animal{
    @Override
    public void sleep() {
        System.out.println("猫要睡觉");
    }
}

当子类中重写方法的访问限定符小于父类时,就会报错

Java方法重写,Java,java,开发语言

访问权限:private < default < protected < public 

3.父类中被staticprivatefinal修饰的方法以及构造方法都不能被重写

static:静态方法是通过类来调用的,而不是通过对象来调用的。若父类中有被static修饰的方法,且子类中也有一个方法名、返回值类型、参数列表与该方法都相同的静态方法,此时,父类与子类中的静态方法是两个没有关系的方法。当通过一个指向子类对象的父类引用变量来调用该静态方法时,只会调用父类的静态方法,因此static修饰的方法没办法达到重写的目的。

private:

class Animal {
    public void show(){
        sleep();
    }

    private void sleep(){
        System.out.println("动物要睡觉");
    }
}

class Cat extends Animal{

    //被private修饰的父类方法不能被重写,若加上@Override则会报错
    //@Override
    public void sleep() {
        System.out.println("猫要睡觉");
    }
}

public class Test {
    public static void main(String[] args) {
        Cat cat = new Cat();
        cat.show();
    }
}


运行结果

Java方法重写,Java,java,开发语言

 此时通过show方法调用的sleep方法为父类Animal中的方法,表明private修饰的sleep方法与子类中的sleep方法不构成重写,即父类与子类中的sleep方法是两个没有关系的方法,即private修饰的方法不能到达重写的目的。

final:当方法被final修饰时,该方法则为最终方法(即不能被重写)

Java方法重写,Java,java,开发语言

 

构造方法:类的构造方法名必须与类名一致,假如父类的构造方法能够被子类重写,那么子类类名必须与父类类名相同,因此构造方法不能被重写

Java方法重写,Java,java,开发语言

 

5.被重写的方法的返回值类型可以不同,但是必须具有父子类关系

class Animal {
    public void sleep(){
        System.out.println("动物要睡觉");
    }
}

class Cat extends Animal{
    @Override
    public void sleep() {
        System.out.println("猫要睡觉");
    }
}

class A{
    public Animal fun(){
        Animal an = new Animal();
        return an;
    }
}

class B extends A{
    @Override
    public Cat fun() {
        Cat c = new Cat();
        return c;
    }
}

父类A与子类B中的返回值类型虽然不同,但Animal与Cat是父子类关系,因此可以重写 

Java方法重写,Java,java,开发语言

 

3.重写与重载的区别

方法重写是子类与父类的一种多态性表现,而方法重载是一个类的多态性表现文章来源地址https://www.toymoban.com/news/detail-630615.html

区别 重写(override) 重载(overload)
参数列表 必须相同 必须不同
返回类型 必须相同(或构成父子类关系) 可以不同
访问限定符 子类不能低于父类(且父类方法不能被private修饰) 可以修改

到了这里,关于Java方法重写的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 关于Java中方法重载和方法重写

    方法重写是子类继承父类(默认继承Object类)后覆盖父类的方法 需要保证同名 同参 同返回值 且访问权限范围不能缩小(publicprotecteddefaultprivate) 方法重载是同类中可以有多个同名但参数不同的方法 调用方法的时候可根据传参情况执行对应的方法 需要注意参数不同可以指参数数量

    2023年04月20日
    浏览(52)
  • 7.11 Java方法重写

    7.11 Java方法重写 这里首先要确定的是重写跟属性没有关系 ,重写都是方法的重写,与属性无关 带有Static修饰的方法的重写实例 父类实例 子类实例 主程序实例 不带Static的方法的重写 在IDEA中可以使用alt+insert快捷键实现快速插入方法的重写如图 选择相应的父类

    2024年02月12日
    浏览(38)
  • Java中方法的重载与重写

    提示:这里可以添加本文要记录的大概内容: 方法的重载与重写容易混,所以单独拿出来比较 提示:以下是本篇文章正文内容,下面案例可供参考 在同一个类中,允许定义一个以上同名的方法称为方法重载 方法重载的规则: 方法名相同 方法的参数必须不同,参数类型或参

    2024年02月08日
    浏览(45)
  • Java中方法的重载和重写的区别。

    一、定义上的区别: 1、重载是指不同的函数使用相同的函数名,但是函数的参数个数或类型不同。调用的时候根据函数的参数来区别不同的函数。 2、覆盖(也叫重写)是指在派生类中重新对基类中的虚函数(注意是虚函数)重新实现。即函数名和参数都一样,只是函数的实

    2023年04月08日
    浏览(48)
  • JAVA中,继承父类和重写父类方法有什么区别?

    在Java中,继承和重写都是面向对象编程的重要概念,但它们有着完全不同的作用: 继承:继承是对象之间的一种关系,子类(派生类)会继承父类(基类)的属性(成员变量)和方法。这使得你可以使用父类的代码,并添加或改变类的行为,以适应新的需求。继承主要是为

    2024年02月10日
    浏览(52)
  • 我在VScode学Java继承(Java继承的特点、super关键字、super和this对比、方法重写、子类构造器)贰

    类的成员包括:成员变量;成员方法;构造方法 构造方法:不管什么修饰符都不可继承 成员变量:都可以继承,但注意一点(继承!=调用,私有的就不可调用) 成员方法:非私有可以。私有不可。 我的个人博客主页:如果’\\\'真能转义1️⃣说1️⃣的博客主页 关于Java基本语

    2024年02月14日
    浏览(53)
  • Java中为什么重写equals()也需要重写hashCode()?

    所有类默认继承Object类 先看一下Object源码 结论 equals()返回结果为true hashCode()一定相同 \\\'==\\\'结果为true hashCode()一定相同 \\\'==\\\'结果为false hashCode()有可能相同(哈希冲突) hashCode()重写规范就是保证equals()相同的两个对象拥有相同的哈希值 回到刚刚哪个问题 为什么重写equals还要重写

    2023年04月25日
    浏览(65)
  • java八股文面试[java基础]—— 重载 和 重写

      Overload Override Overwrite三者区别:   Java中,有一个名叫方法签名的东西,它的定义是这样的 Definition: Two of the components of a method declaration comprise the method signature—the method’s name and the parameter types. 大概意思是,方法签名有两部分组成——方法名和参数列表 我上面的函数的方法

    2024年02月12日
    浏览(50)
  • java.8 - java -override&overload 重写和重载

    重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变 。 即外壳不变,核心重写! 重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说子类能够根据需要实现父类的方法。 重写方法不能抛出新的检查异常或者比被重写方法

    2024年02月11日
    浏览(46)
  • Java多态与重写

    Java继承与组合 你知道为什么会划分数据类型吗?—JAVA数据类型与变量 10 > 20 10 / 0 == 0等于串联小灯泡?—JAVA运算符 你真的知道怎样用java敲出Hello World吗?—初识JAVA 现实生活中,但我们完成某一个同样的行为,当不同的对象去完成时会产生出不同的状态.比如说吃食物,当猫去完

    2023年04月15日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包