//父类
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
    public void show()
    {
        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()方法,也称为虚方法
    }
}
//在多态中,子类可以调用父类中的所有方法
//在多态中,子类重写了父类的方法,那么调用的就是子类重写后的方法
//在多态中,不能调用子类单独拥有的方法.