“重载”与“重写”的区别

本文详细介绍了Java中的方法重载(Overload)和重写(Override)概念。方法重载允许在同一个类中定义多个同名方法,通过参数类型、个数或顺序的不同来区分。而方法重写发生在继承关系中,子类对父类方法的重新定义,以满足特定需求。文中通过示例代码解释了两者的区别和应用场景。
摘要由CSDN通过智能技术生成

首先我们要知道这两个词是完全不同的意思:

        重载(Overload)是指:在同一个类中可以定义很多方法,但很多的方法实现的功能是相同的,只是参数不同(类型,顺序,个数),我们把这种相同方法名,只有参数不同称为方法重载。

例如:

public class Demo02 {
	public static void main(String[] args) {
		//方法的重载:在同一个类中,针对相同功能的一组同名方法的定义,方法的参数(类型、个数、顺序)
		
		Demo02 dm = new Demo02();
		
		dm.food("芝芝莓莓");
		
		
		
	}
	public void food() {
		System.out.println("炒年糕");
	}
	public void food(String name) {
		System.out.println("你想吃:" + name);
	}
	public void food(String name, double price) {
		if(price > 0 ) {
			System.out.println("食品是:" + name + "价格为:" + price);
		}else {
			System.out.println("请重新输入!");
		}
	}
}

值得注意的是:重载的返回值类型都是相同的。

了解到重载后,我们来具体看一下重写。

        重写(Override)是指:在继承关系中,子类定义了一个与父类完全相同的方法被称为重写。

        重写的意义在于子类在使用父类的方法时某些方法并没有达到自己想要的运行结果,对原方法进行重写。

我们来以toString()方法为例:

public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }

在Object类中toString()方法返回的结果是类名+@ + 哈希值,但有时我们并不希望返回这个结果,于是对toString()方法进行重写:

public class Demo03 {
	public static void main(String[] args) {

		Object obj = new Object();
		String str1 = obj.toString();
		System.out.println(str1 );
		
		Book book = new Book("悲惨世界","雨果");
		String str2 = book.toString();
		System.out.println(str2);
		
		Book bookx = new Book("西游记", "吴承恩");
		System.out.println(bookx);  //自动调用对象的toString()方法
		
	}
}

//图书类
class Book {
	private String bookName;
	private String author;

	// 构造方法
	public Book(String bookName, String author) {

		this.bookName = bookName;
		this.author = author;
	}
	
	//重写toString()
	@Override
	public String toString() {
		String s = String.format("<<%s>>------%s", bookName,author);
		return s;
	}
	

进行重写以后,调用toString()方法返回的就是我们想要的:

<<悲惨世界>>------雨果:
<<西游记>>------吴承恩

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值