天天看點

[Java] 多态

//父類

class person

{

    //聲明變量

    public string name;

    public int age;

    //建立方法

    public void setname(string name)

    {

        this.name = name;

    }

    public void setage(int age)

        this.age = age;

    public void show()

        system.out.println("name:"+name+", age:"+age);

}

//子類

class student extends person

    public string school;

    public void setschool(string school)

        this.school = school;

    //重寫父類方法override

        system.out.println("name:"+name+", age:"+age+", school:"+school);

public class test2

    public static void main(string[] args)

        //初始化父類,并調用父類方法

        person p = new person();

        p.setname("person");

        p.setage(25);

        p.show();

        //初始化子類,并調用父類和子類的方法

        student s1 = new student();

        s1.setname("student");

        s1.setage(18);

        s1.setschool("zzia");

        s1.show();

        //利用多态,初始化一個類型為person的student類,

        person s2 = new student();

        s2.setname("which");//可以調用父類的方法

        s2.setage(15); //可以調用父類的方法

        //s2.setschool("shanghai"); //不能調用子類獨有的方法,編譯不能通過

        s2.show(); //調用的是子類中重寫父類後的show()方法,也稱為虛方法

//在多态中,子類可以調用父類中的所有方法

//在多态中,子類重寫了父類的方法,那麼調用的就是子類重寫後的方法

//在多态中,不能調用子類單獨擁有的方法.