Java方法重载与方法重写的区别

方法的重载

重载(overload):在同一个类中,声明多个同名方法,通过参数列表来区分不同的方法(参数列表的数量,类型、顺序)
示例代码:

public class Demo {
	private String name;
	private int age;
	
	public static void main(String[] args) {
		Demo demo=new Demo();
		demo.test1();
		demo.test1("张三");
		demo.test1("王五", 19);
		demo.test1(18, "李四");
	}
	//方法的重载
	public void test1() {
		
	}
	//方法的重载
	public String test1(String name) {
		return name;
	}
	//方法的重载
	public void test1(String name,int age) {
		this.name=name;
		this.age=age;
	}
	//方法的重载
	public void test1(int age,String name) {
		this.age=age;
		this.name=name;
	}
}

总结:

1.重载必须有不同的参数列表

2.重载对于返回类型没有要求

3.重载对于修饰符访问权限没有要求

方法的重写

重写(override):前提是发生在具有继承关系的两个类之间(子类可以继承父类非私有的方法),当父类方法不能满足子类需求时,子类可以对继承的方法进行重新编写

重写规则:

  • 参数列表必须保持一致;
  • 返回值类型必须保持一致;
  • 方法名必须保持一致;
  • 重写的方法的访问权限范围必须大于等于父类方法;
  • 重写方法抛出的异常范围不能大于父类方法;

示例代码:

class ParentClass { 
	// x成员变量 
	int x;
	protected void setValue() {	
		x = 10;
	}
}

class SubClass extends ParentClass { 
	// 屏蔽父类x成员变量 
	int x;
	
	@Override 
	public void setValue() { // 覆盖父类方法 
		// 访问子类对象x成员变量
		x = 20;
		// 调用父类setValue()方法 
		super.setValue();
	}
	public void print() { 
		// 访问子类对象x成员变量 
		System.out.println("x = " + x); 
		// 访问父类x成员变量 
		System.out.println("super.x = " + super.x); 
	}
}

调用代码如下:

public class HelloWorld {
	public static void main(String[] args) { 
		//实例化子类SubClass 
		SubClass pObj = new SubClass(); 
		//调用setValue方法 
		pObj.setValue(); 
		//调用子类print方法 
		pObj.print(); 
	}
}

运行结果如下:

x = 20 
super.x = 10

以上内容仅供参考学习,如有侵权请联系我删除!
如果这篇文章对您有帮助,左下角的大拇指就是对博主最大的鼓励。
您的鼓励就是博主最大的动力!

发布了120 篇原创文章 · 获赞 11 · 访问量 6950

猜你喜欢

转载自blog.csdn.net/weixin_45366499/article/details/105342126