Java中的“方法重写“和“方法重载“

1、方法的重载

        在一个类中,我们可以定义多个方法。如果有一系列方法,它们的功能都是类似的,只有参数有所不同,JavaOOP的语法允许把这一组方法名定义为同名方法。例如,在Hello类中,定义多个hello()方法:

class Hello {
    public void hello() {
        System.out.println("Hello, world!");
    }
    public void hello(String name) {
        System.out.println("Hello, " + name + "!");
    }
    public void hello(String name, int age) {
        if (age < 18) {
            System.out.println("Hi, " + name + "!");
        } else {
            System.out.println("Hello, " + name + "!");
        }
    }
    public int hello(int x) {
    	return x*5;
    }
}

        这种方法名相同,但各自的参数不同,称为方法重载(Overload),注意:方法重载的返回值类型通常都是相同的。方法重载的目的是:功能类似的方法使用同一名字,更容易记住,调用起来也简单,编译器会根据传入的参数自动匹配到具体调用的方法。

hello()方法的实现:

public class Work_01 {
	public static void main(String[] args) {
		Hello hl = new Hello();
		
		hl.hello();       // Hello, world!
		hl.hello("梁志超");      //Hello, 梁志超!
		hl.hello("王老八", 17);       //Hi, 王老八!
		System.out.println(hl.hello(5));      //25
		
	}
}

2、方法的重写

        在Java继承关系中,子类如果定义了一个与父类方法签名完全相同,返回值也相同的方法,被称为方法的重写(Override)

        例如,在Person类中,我们定义了run()方法,在子类Student中,重写这个run()方法:

        ...注意:在重写方法前加上@Override注解可以让编译器帮助检查是否进行了正确的覆写,此时不小心写错了方法签名编译器会报错

class Person {
    public void run() {
        System.out.println("Person.run");
    }
}
class Student extends Person {
    @Override
    public void run() {
        System.out.println("Student.run");
    }
}

        而在下面的例子中,则不是方法的重写:

class Person {
    public void run() { … }
}

class Student extends Person {
    // 不是Override,因为参数不同:
    public void run(String s) { … }
    
    // 不是Override,因为返回值不同:
    public int run() { … }
}

        那么方法的重写对我们的好处就是:重写子类可以覆写父类的方法(Override),覆写在子类中改变了父类方法的行为,从而使我们能够更具体的实现继承同一个父类的不同子类的各自方法的调用

 最后:

总结两者的区别:如果方法签名不同,就是Overload重载,Overload重载方法是一个新方法;如果方法签名相同,并且返回值也相同,就是Override 重写。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值