java覆盖、重载、重写初识

/**
 * 区分:
 *         覆盖:override    继承了父类的同名无参函数。
 *         重写:overwrite       当前类的同名方法。
 *         重载:overlord   继承了父类的同名有参函数。
 * */
public class OldPerson {
    public String ss = "Good";
    
    //这是覆盖override:继承了父类同名无参的方法。重点:继承关系+无参数。
    //由于类在创建时,都会有一个默认的无参构造方法,而自定义的无参构造方法对原来的实现了覆盖。
    OldPerson(){
        System.out.println("This is override!");
    }
    
    //这是重载Overload:重载了父类的默认无参构造函数,参数列表不同。重点:继承关系+有参数。
    //它既可以看做是对父类无参构造函数的重载,也可看做是对第一个构造函数的重写吧!
    OldPerson(String ss){
        this.ss = ss;
        System.out.println(ss);
    }
    
    public void eat(){
        System.out.println("OldPerson eat eggs!");
    }
    
    //这是重写overwrite:重写了eat()两个函数,参数不同。重点:同类+不同参。
    //我个人认为第二个带参数的eat方法才构成重写,仅仅一个方法根本够不上重写资格。
    //可是我看到很多书籍上把以上两个eat方法一并算做重写,所以还得请大神指点。
    public void eat(String name){
        System.out.println("Oleperson eat;" + name);
    }  
}
/*
总结:覆盖和重载发生在有继承关系中;而重写则发生在该类本身。
*/













你可能感兴趣的:(覆盖,重载,重写)