方法重载和重写

2016-08-18  本文已影响16人  998584f56259

1、重载:方法名相同而形式参数不同。

/**
 * 方法重载:首先来看一个方法的构成:访问权限修饰符+其他修饰符(static、final等)+返回值类型+方法名+参数列表
 * 在一个类中,区别一个方法的要素为方法名+参数列表,这两个要素构成方法的方法签名
 */

重载是一个类中多态性的一种表现,实例如下所示。

class MyOverload{

public void site(){
    System.out.println("0");
}

public void site(int i,int c){
    System.out.println("1");
}

public void site(int j,long t){
    System.out.println("2");
}

public void site(long j,int t){
    System.out.println("3");
}
}

2、重写:不改写方法签名而改写方法的实现逻辑。

class Person{
private int age;
private String name;

public void setAge(int age){
    this.age = age;
}
public void setName(String name){
    this.name = name;
}
public int getAge(){
    return age;
}
public String getName(){
    return name;
}

public String getInfo(){
    return "Name is:"+name+",Age is "+age;
}
}
class Student extends Person{
private String school;

public void setSchool(String school){
    this.school = school;
}
public String getSchool(){
    return school;
}
/**
 * 这个是重写父类的方法
 * 就是不改变方法的签名,改写方法内的具体实现
 */
public String getInfo(){
    return "Name is:"+getName()+",Age is "+getAge()+",School is:"+school;
}
}
public class TestOverRide{
public static void main (String args[]){
    Student student = new Student();
    Person person = new Person();
    person.setAge(1000);
    person.setName("lili");
    
    student.setAge(23);
    student.setName("leilei");
    student.setSchool("hunandaxue");
    
    System.out.println(person.getInfo());
    System.out.println(student.getInfo());
}
}
上一篇 下一篇

猜你喜欢

热点阅读