Java中 重载overload和重写override(覆盖)的区别

因为最近学习的内容好多都有所相似的地方,自己脑子里总是感觉很乱,所以今天在这里梳理一下这两个知识点,不到位、不准确的地方希望各位看官多多指教、不吝赐教

重载(Overload)

I .定义:在一个类中定义多个相同名称的方法,即为重载。
II. 要求:
1)方法名称相同
2)参数列表不同
3)与访问修饰符、返回值无关

public class TestOverload{
	public static void main(String[] args) {
		Student s = new Student();
		s.a();
		s.a("jack");
		s.a("tom", 18);
	}
}


class Student{
	String name;
	int age ;
	double score;
	***//同一个类中  方法名称相同 参数列表不同构成重载 (参数类型、个数任何一个不同或者都不相同均构成重载)***
	**//与访问修饰符、返回值类型均无关!!!**
	//无参方法
	public void a(){
		System.out.println("我是老大");
	}
	//一参方法    
	public String a(String name ){
		System.out.println("老二叫"+name);
		return name;
	}
	//两参方法  
	 void a(String name , int age){
		System.out.println("一个"+age+"岁的"+"老三叫"+name);
	}
}

重写(Override)

I.定义:又称覆盖,是子类继承父类的属性和方法后,子类的方法可能会因子类自身特点而特殊化,但又是子类所必须具有的方法,因此通过子类继承父类后,重新写一个新的方法,来达到覆盖原有父类方法的目的。

II.要求:

  1. 方法名、参数表、返回值,必须与父类完全相同。
  2. 访问修饰符应与父类相同或比父类更宽泛。

public class TestStudent{
	public static void main(String[] args) {
		Baby b = new Baby();
		b.drink();
	}
}


class Father{
	String name;
	int age ;
	public void drink(){
		System.out.println("father不需要喝奶");
	}

}
class Baby extends Father{
	public void drink(){
		System.out.println("baby需要喝奶");
	}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章