/* ***************************************************************************** * @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; } }
Sign in to make a reply
用户5527594890