Discuss / Java / 打卡~~

打卡~~

Topic source
/*
*****************************************************************************
* @authur      : tangxi.zq
* @time        : 2019-06-13
* @file         : 继承的demo
* @Description : 关于继承需要注意的点:继承是面向对象编程的一种强大的代码复用方式;
                                   Java只允许单继承,所有类最终的根类是Object;
                                   protected允许子类访问父类的字段和方法;
                                   子类的构造方法可以通过super()调用父类的构造方法;
                                   可以安全地向上转型为更抽象的类型;
                                   可以强制向下转型,最好借助instanceof判断;
                                   子类和父类的关系是is,has关系不能用继承。
******************************************************************************
*/
class Inherit
{
    public static void main(String[]args)
    {
        //调用person构造函数
        Person p = new Person("小明", 12);
        //调用person构造函数再调用student构造函数
        Student s = new Student("小红", 20, 99);
        //先调用person构造函数再调用student构造函数最后调用primarystudent构造函数
        Student ps = new PrimaryStudent("小军", 9, 100, 5);
        System.out.println(ps.getAge());
        System.out.println(ps.getScore());
        // System.out.println(ps.getGrade());报错,因为向下转型student无法获得getGrade方法
        PrimaryStudent ps2 = new PrimaryStudent("小强",10,98,6);
        System.out.println(ps2.getGrade());
    }
}
class Book
{
    protected String name;
    public String getName()
    {
        return this.name;
    }
    public void setName(String name)
    {
        this.name = name;
    }
}
class Person
{
    protected String name;
    protected int age;

    public Person(String name, int age)
    {
        System.out.println("调用person类构造函数");
        this.name = name;
        this.age = age;
    }
    public Person(){}
    public String getName() { return name; }
    public void setName(String name) { this.name = name; }

    public int getAge() { return age; }
    public void setAge(int age) { this.age = age; }
}
class Student extends Person{
    protected int score;
    public Student(String name, int age, int score)
    {
        super(name,age);
        System.out.println("调用student类构造函数");
        this.score = score;
    }
    public int getScore()
    {
        return this.score;
    }
}
class PrimaryStudent extends Student
{
    protected int grade;

    public PrimaryStudent(String name,int age, int score,int grade)
    {
        super(name,age,score);
        System.out.println("调用primary student类构造函数");
        this.grade = grade;
    }
    public int getGrade()
    {
        return this.grade;
    }

}

  • 1

Reply