天天看点

[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()方法,也称为虚方法

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

//在多态中,子类重写了父类的方法,那么调用的就是子类重写后的方法

//在多态中,不能调用子类单独拥有的方法.