java实现多态 方法的重写和重载的区别

1.方法的重写

思路:先写一个父类People,在类中定义一个 print方法 ,然后写一个子类 Student 继承父类,重写print方法。

//父类

class People{

  public void print(){
    System.out.println("这是父类的print方法!");

  }

}

//子类 继承父类

class Student extends People{
  public void print(){

    System.out.println("这是子类的print方法!");  

  }

}

//测试类

public class Test{

  Student t=new Student(); 生成子类的对象

  t.print(); //子类对象 调用print方法

}

运行结果: 这是子类的print方法!

分析:子类继承父类后重写父类的方法,子类对象调用时,调用的是子类的print方法。

重点: 方法的重写,不改变方法的 返回值类型,参数列表;改变的只是方法中的内容,这是重写。

备注:方法重写后,可用super.方法名();调用父类中未被重写的方法。

2.方法的重载

思路:先写一个父类People,在父类中定义多个方法名print相同,但参数列表或返回值类型不同的方法;子类继承People类。重载这些方法。

public class People {
String name; 
int age;
void print(){ 
System.out.println("姓名:" +name+"年龄:" +age); 
}
void print(String a,int b){ 
System.out.println("姓名:" +a+"年龄:"+b); 
void print(String a,int b,intC){ 
System.out.println("姓名:"+a+"年龄:" +b+"ID号:" +c); 
}
void print(String a,int b,doubleC){ 
System.out.println("姓名:"+a+"年龄:" +b+"ID号:"+c); 

}

public class Test{
publicstaticvoidmain(String args[]) 
{Personpl=newPerson();
p1.nanle="李明";
p1.age=22;
p1.print(); 
p1.print("王小早",19); 
p1.print("金波",18,100325); 
p1.print("婉宁",25,110903); 

}

运行结果:

姓名:李明年龄:22
姓名:王小早年龄:l9
姓名:金波年龄:18ID号:10 00325
姓名:婉宁年龄:25ID号:110903

分析:方法的重载,只要方法名相同,返回值类型和参数列表可以不痛。子类继承父类时,可根据返回值类型 和 参数列表的异同,来决定调用重载的哪个方法。

原文地址:https://www.cnblogs.com/mawei11/p/6819627.html