版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。
父类:
package com.lanhuigu.JavaBase; /** * 一,重写(override),也翻译成覆盖。 * 在java中含义:同一个东西只有一种含义,只是原先的含义完全被后来的含义取代。 * 重写(覆盖)的规则: * 1、重写方法与被重写方法参数列表类型必须完全一致。 * 2、重写方法的访问修饰符一定要大于或等于被重写方法的访问修饰符(public>protected>default>private)。 * 3、重写的方法的返回值和被重写的方法的返回值必须保持一致; * 4、重写的方法所抛出的异常必须和被重写方法的所抛出的异常一致,或者是其子类; * 5、被重写的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行重写。 * 6、静态方法不能被重写为非静态的方法(会编译出错)。 * 用一句话总结重写规则:重写方法与被重写方法访问控制可能不一样,方法内容不一样,其余的均与被重写方法一样。 * 注意:overload是重载,一般是用于在一个类内实现若干重载的方法,这些方法的名称相同而参数形式不同。 * 二,重载(overload),也翻译成过载。 * 在java中含义:同一样东西在不同的地方具有多种含义,同一个类同名方法的不同表现形式。 * 重载(过载)的规则: * 1、方法名相同,参数类型不同或参数列表形式不同; * 2、不能通过访问权限、返回类型、抛出的异常进行重载; * 3、方法的异常类型和数目不会对重载造成影响; */ public class OverrideAndOverloadTest {	//===========重写eg===========	/**	* 私有方法不能被重写,这就是Java访问控制的作用	*/	private String sayOverridePrivate() {	return "私有方法不能被重写测试";	}	/**	* 静态方法不能被重写为非静态方法,当然了,根据重写原则,非静态方法也不能被重写成静态方法	*/	public static String sayOverrideStatic() {	return "静态方法不能被重写为非静态方法测试";	}	/**	* 正常的重写--定义一个被重写的方法	* @param normal	*/	public String sayOverrideNormal(String normal) {	System.out.println("one");	return "按照规则正常重写";	}	//===========重载eg(只发生在同一类中)===========	/**	* 定义一个不带参数将要被重载的方法	*/	public String sayOverload() {	return "重载测试1";	}	/**	* 重载sayOverload方法	* @param load1	* @param load2	* @return	*/	public String sayOverload (String load1,String load2) {	System.out.println("load1:"+load1);	System.out.println("load2:"+load2);	return "重载--方法名相同,参数类型列表不同,返回值不同,访问权限可以不同";	} }
子类重写父类的方法:
package com.lanhuigu.JavaBase; public class MyTest extends OverrideAndOverloadTest{	//============重写OverrideAndOverloadTest中的方法==========	public String sayOverridePrivate() {	return "私有方法如果被重写,相当于在新类MyTest中重写创建一个方法sayOverridePrivate";	}	//将OverrideAndOverloadTest中的static方法重写成非静态方法将报错	/*public String sayOverrideStatic () {	return "";	}*/	public String sayOverrideNormal (String normal) {	System.out.println("two");	return "按照重写规则进行重写,将替代掉原来方法的含义";	} }