0%

函数(方法)继承 覆盖 重载

一个简单的例子,一看就明白

package com.pocketdigi;
public class Extends {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Zhang zhang=new Zhang();
        zhang.setName("shang");
        zhang.setSex("male");
        zhang.setAge(20);
        System.out.println(zhang.name);
    }

}
class People{
    String name;
    String sex;
    int age;
    void setName(String n){
        name=n;
        System.out.println("父类设置名字为"+n);
    }
    void setSex(String s){
        sex=s;
    }
    void setAge(int a){
        age=a;
    }
}
class Zhang extends People{//类Zhang继承People,是People的子类
    //覆盖父类的setName方法
    void setName(String n){
        super.setName(n);
        //super代表父类,重载父类setName方法
        name="zhang"+n;
        System.out.println("子类设置名字为"+name);
    }
}

1、子类的对象也是父类的实例,但父类的对象不是子类的实例 2、final类不能被继承,final方法不能被覆盖 3、引用不同包的类,需先import,非public的类不能引用 4、private方法只能被同类访问、default只能在同包、同类中访问,不同包只有public可被访问,如果是子类继承父类,还可访问父类的protected方法 5、private、static方法不能被覆盖,即使编译器不报错,也是产生一个新的方法,并非覆盖 6、如果方法为abstract(抽象),所在类必须声明为abstract,抽象方法没有方法体。抽象类不能实例化为对象,必须先派生子类,至少实现其中的一个方法,再实例化。如果父类为抽象类,子类要么是抽象类,要么就实现父类的抽象方法。