三分钟了解“Java重写”

要了解“Java重写”,首先要知道“继承”,继承是一种基于已有类(父类)创建新类(子类)的一种方式 

下面的Son类继承了Father类

public class Father(){
	public void eat(String name,int age){
		System.out.println("正在用筷子吃饭...");
	}
	public final void work{
	}
}
public class Son extends Father(){
	@Override  //注解
	public void eat(String str,int num){
		System.out.println("正在用刀叉吃饭...");
	}
}
-其中Object是所有类的父类,上面的Father类就默认继承了Object类(`public class Father extends Object(){}`)。

重写即为重新改写父类的方法,为了更准确的描述子类的行为特征
重写注意事项
0、重写后的方法可以使用@Override修饰,表示该方法被重写。
1、重写后的方法访问权限要么和父类方法访问权限相同,要么大于父类方法(public > protected > 默认 > private)。例如上面的Father类用的是public,则Son类只能用public;但如果Father类用的是protected,则Son类可以使用protected,也可以使用public 。
2、父类中用final修饰的方法(注意:若用final修饰一个,则该类没有子类,即不能被继承),子类不允许重写,但可以被继承。例如上面代码Father类中的work方法就不能被Son类重写,但可以被Son类继承。
3、父类中用static修饰的方法,子类也是不允许被重写,但可以被继承。例如上面Father类中的eat方法若改成:public static void eat(){},则只能被Son类继承,不能被其重写。
4、子类重写后的方法不能添加static修饰。
5、子类重写后的方法,方法名必须和父类方法名相同,参数列表除了名字不做限制外,其它必须相同,例如:上面Father类中(String name,int age)和Son类中的(String str,int num),除了变量名字可以变动外,变量类型和数量都需保持一致。
6、返回值

  • a、如果父类返回值void或基本数据类型,则重写后的方法返回值必须和父类方法返回值保持一致。例如上面Father类用的是voidpublic void eat(){},则Son类也只能用voidpublic void eat(){};如果Father类用的是int public int eat(){},则Son类也只能用int public int eat(){}
  • b、如果父类方法返回值引用类型,则重写后的方法返回值要么与父类一致,要么是父类方法返回值的子类。例如:Father类返回值为Objectpublic Object eat(){},则Son类返回值可以用String、int、long、double等,例如:
public Object eat(){
	System.out.println("正在用筷子吃饭...");
	return 1;
}
public String eat(){
	System.out.println("正在用刀叉吃饭...");	
	return "";
}
发布了34 篇原创文章 · 获赞 8 · 访问量 715

猜你喜欢

转载自blog.csdn.net/weixin_45720626/article/details/104705004