La diferencia entre la reescritura de métodos y la sobrecarga en Java

 

Reescritura de métodos La reescritura de
métodos se produce durante el tiempo de ejecución y la subclase modifica la lógica interna del método en la clase principal y no puede cambiar la definición externa.
Característica
1: La reescritura del método ocurre en la subclase;
2: Los parámetros pasados ​​por el método de reescritura deben ser consistentes con los de la clase principal;
3: El tipo de valor de retorno, el nombre del método debe ser consistente con la clase principal, arroje el el alcance de la excepción es más pequeño que la clase principal y el modificador de acceso tiene mayor autoridad que la clase principal;
4: Si el modificador de acceso del método de la clase principal es (privado / final / estático), el método de la subclase no se puede anular;
5: la clase padre El método de construcción no puede ser anulado por subclases;

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{
}

Sobrecarga de métodos La sobrecarga de
métodos se produce durante la compilación En la misma clase, varios métodos con el mismo nombre realizan un procesamiento lógico diferente según los diferentes parámetros de entrada.
Característica
1: La sobrecarga del método debe estar en la misma clase;
2: Las listas de parámetros del método deben ser inconsistentes (tipos inconsistentes \ número \ orden inconsistente);
3: Los valores de retorno del método y los modificadores de acceso pueden ser diferentes;
4: Los métodos de construcción pueden ser sobrecargado

/*
*	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()方法");
	}
}

Supongo que te gusta

Origin blog.csdn.net/weixin_51980491/article/details/112724938
Recomendado
Clasificación