Java之重载和重写

版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/u010927640/article/details/53576111


       重载(Overload)与重写(Overwrite/Override)都是针对方法来说的,那这两种机制有什么好处呢?

       重载——同样的一个方法能够根据输入数据的不同,做出不同的处理。【有不同的参数列表(静态多态性)】

重写——当子类继承自父类的相同方法,输入数据一样,但要做出有别于父类的响应时,就需要重写父类的方法。即在子类中重写该方法【相同参数,不同实现(动态多态性)】

用个toy program应该更好理解一些,看完程序之后建议读者应该先想一想输出结果是什么。

1. Overload:比较不同类型的两个数的大小,把大的那个数输出。

public class TestOverload{
	void max(int a,int b){
		System.out.println(a>b ? a : b);
	}
	
	//构成重载,名称一样,参数(个数或类型)不一样的多个方法
	void max(short a, short b){
		System.out.println(a > b ? a : b);
	}
	
	void max (float a, float b){
		System.out.println(a> b ? a : b);
	}
	
	public static void main(String[] args){
		Test t = new Test();
		//调用的是int类型的参数方法
		t.max(2, 5);  
		
		//调用的是short类型的参数方法
		short a=2;
		short b = 4;
		t.max(a,b);
	}
}

输出结果:

     

 

t.max(2,5)调用的是void max(int a,int b),再比较这个两个值的大小,结果输出是5t.max(a,b),传入的是虽然是24,但强制转换成short类型,所以调用的是void max(short a, short b),结果输出是4



2.Override:获取人和学生的相关信息。

//获取人和学生的相关信息
class Person{
	private String name;
	private int age;
	public void setName(String name){this.name=name;}
	public void setAge(int age){this.age=age;}
	public String getName(){return name;}
	public int getAge(){return age;}
	public String getInfo(){ //父类只有name合age属性
		return "Name: " + name + "\n" + "age: " +age;
	}
}	
	class Student extends Person{
		private String school;  //除了有父类的name和age外,还有自己的的school属性 
		public String getSchool(){ return school;}
		public void setSchool(String school){ this.school=school;}
		//重写了父类的方法,把自己特有的school属性也实现
		public String getInfo(){
			return "Name: " + getName() + "\n" + "age: " +getAge() + "\nschool: " +school;
		}
	}
	
public class TestOverWrite{
	public static void main(String arg[]){
		Student student = new Student();
		Person person = new Person();
		person.setName("lee");
		person.setAge(24);
		student.setName("Angelo");
		student.setAge(18);
		student.setSchool("北理工");
		person.getInfo();
		student.getInfo();
		System.out.println(person.getInfo());  //person的信息,父类
		System.out.println(student.getInfo());  //student的信息,子类
	}
}

      输出结果:

                       

      通过这两个小例子,对于重载与重写有了简单明了的认识。重写在多态当中的好处表现出了OOP的好处,经过实践后会有更深的体会,接下来会继续去认识多态。



猜你喜欢

转载自blog.csdn.net/u010927640/article/details/53576111