重载和重写

60 篇文章 0 订阅
18 篇文章 0 订阅
本文详细介绍了Java中的方法重载和重写概念,包括它们的定义、应用场景、特点和区别。方法重载关注同名方法的参数列表,而重写发生在子类对父类方法的继承和扩展中。通过实例展示了如何在Animal和Cat类中实现方法重写。同时,还提到了`@Override`注解在方法重写中的作用和注意事项。
摘要由CSDN通过智能技术生成

方法重载

简单来说就是函数或者方法有相同的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者重载方法


方法重载指同一个类中定义的多个方法之间的关系,满足下列条件的多个方法相互构成重载。
1)多个方法在同一个类中
2)多个方法具有相同的方法名
3)多个方法的参数不相同,类型不同或者数量不同

下面的程序哪个和show()方法重载()?**A、C、D**

class Demo{

  void show(int a,int b,float c){}

}

A.void show(int a,float c,int b){}  //√ 参数顺序不同
B.void show(int a,int b,float c){}  //× 完全一致
C.int show(int a,float c,int b){return a;}  //√ 同方法名,参数顺序不同
D.int show(int a,float c){return a    //√ 参数不同

方法重载特点:

*重载仅对应方法的定义,与方法的调用无关,调用方式参照标准格式
*重载仅针对同一个类中方法的名称与参数进行识别,与返回值无关,换句话说不能通过返回值来判定两个方法是否相互构成重载

方法重写


* 1、方法重写概念

  * 子类出现了和父类中一模一样的方法声明(方法名一样,参数列表也必须一样)

* 2、方法重写的应用场景

  * 当子类需要父类的功能,而功能主体子类有自己特有内容时,可以重写父类中的方法,这样,即沿袭了父类的功能,又定义了子类特有的内容

具体实例: 猫和动物

猫类属于动物类,继承了动物类,具有相同的方法“eat”,并且重写了eat,最后输出的也是重写的“猫吃鱼”

可以结合http://t.csdn.cn/fqWv6理解

package com.object_02;

public class Animal9 {
        public int age = 40;

        public void eat() {
            System.out.println("动物吃东西");
        }
    }


package com.object_02;

import com.object_02.Animal9;

public class Cat9 extends Animal9 {
    public int age = 20;
    public int weight = 10;


    @Override
    public void eat() {
        System.out.println("猫吃鱼");
    }

    public void playGame() {
        System.out.println("猫捉迷藏");
    }
}

package com.object_02;

public class AnimalDemo9 {
    public static void main(String[] args) {
        //有父类引用指向子类对象
        Animal9 a = new Cat9();

        System.out.println(a.age);
//        System.out.println(a.weight);
// 因为成员变量​编译看和运行看父类,父类中没有,所以weight报错
// 运行出的age也是父类的40

        a.eat();
//        a.playGame();
//因为成员方法编译看父类,父类Animal中只有eat方法,所以playGame方法报错
//因为运行看子类,所以eat方法运行的结果是子类重写后的"猫吃鱼"
    }
}

3、Override注解

* 用来检测当前的方法,是否是重写的方法,起到【校验】的作用 2.7 方法重写的注意事项(掌握)

* 方法重写的注意事项

1. 私有方法不能被重写(父类私有成员子类是不能继承的)
2. 子类方法访问权限不能更低(public > 默认 > 私有)
 

重载和重写的区别如下(拓展)

1.定义不同---重载是定义相同的方法名,参数不同;重写是子类重写父类的方法。

2.范围不同---重载是在一个类中,重写是子类与父类之间的。

3.多态不同---重载是编译时的多态性,重写是运行时的多态性。

4.返回不同---重载对返回类型没有要求,而重写要求返回类型,有兼容的返回类型。

5.参数不同---重载的参数个数、参数类型、参数顺序可以不同,而重写父子方法参数必须相同。

6.修饰不同---重载对访问修饰没有特殊要求,重写访问修饰符的限制一定要大于被重写方法的访问修饰符。
 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值