Java中方法重写和重载的区别

 

方法重写
方法重写是发生在运行期间的,子类对父类中的方法的内部逻辑进行重新改造,不能改变外部的定义。
特点
1:方法重写发生在子类中;
2:重写方法传入的参数必须与父类中方法的传入参数一致;
3:返回值类型,方法名必须与父类的一致,抛出异常的范围小于父类,访问修饰符的权限要大于父类;
4:如果父类方法的访问修饰符为(private/final/static),则子类方法就不能被重写;
5:父类的构造方法不能被子类重写;

public class Test{
	public static void main(String[] args) {
		DemoSon demoson=new DemoSon();
		//调用DemoSon类中的dosth()方法
		demoson.dosth(); //输出:DemoSon子类重写的Demo父类的dosth()方法
		Demo1 demo1=new Demo1();
		//直接调用父类Demo的dosth()方法
		demo1.dosth();//输出:Demo父类的方法
	}
}
class Demo{
	public void dosth(){
		System.out.println("Demo父类的方法");
	} 
}
class DemoSon extends Demo{
	public void dosth(){//实现Demo类中dosth()方法的重写
		System.out.println("DemoSon子类重写的Demo父类的dosth()方法");
	} 	
}
class Demo1 extends Demo{
}

方法重载
方法重载是发生在编译期间的,同一个类中,多个同名方法根据传入参数不同,执行不同的逻辑处理。
特点
1:方法重载必须在同一个类中;
2:方法的参数列表必须不一致(类型不一致\数量不一致\顺序不一致);
3:方法的返回值和访问修饰符可以不同;
4:构造方法可以被重载;

/*
*	Dome类中实现了dosth()方法的三次重载
*/
public class Dome{
	public void dosth(){
		System.out.ptinln("没有参数的dosth()方法");
	}
	public void dosth(int n){
		System.out.ptinln("一个int类型的参数的dosth()方法");
	}
	public void dosth(int n,String str){
		System.out.ptinln("一个int类型的参数和一个String类型参数的dosth()方法");
	}
}

猜你喜欢

转载自blog.csdn.net/weixin_51980491/article/details/112724938