Contents

7.1. 类的继承

Subroutine.java

class Parent { // 父类
    Parent() {
        System.out.println("调用父类的parent()构造方法");
    }
}

class SubParent extends Parent { // 继承Parent类
    SubParent() {
        System.out.println("调用子类的SubParent()构造方法");
    }
}

public class Subroutine extends SubParent { // 继承SubParent类
    Subroutine() {
        System.out.println("调用子类的Subroutine()构造方法");
    }

    public static void main(String[] args) {
        Subroutine s = new Subroutine(); // 实例化子类对象
    }
}

/*输出结果
调用父类的parent()构造方法
调用子类的SubParent()构造方法
调用子类的Subroutine()构造方法
 */

Person2.java 两个实例属性,name、age

package a51work6;

public class Person2 {
    String name;
    int age;

//  定义构造方法
    public Person2(String name, int age) {
        this.name = name;
        this.age = age;

    }

    @Override
    public String toString() {
        return "Person2 [name =" + name + ", age=" + age + "]";
    }


}

Student.java类继承Person2类的构造方法,并新增school实例属性

package a51work6;

public class Student extends Person2 {
    String school;
    public Student(String name, int age, String school) {
        super(name, age);
        this.school = school;
    }

    @Override
    public String toString() {
        return "Student [school=" + school + ", name=" + name + ", age=" + age + "]";
    }

}

Work.java类,继承Person2类,新增factory实例属性

package a51work6;

public class Work extends Person2 {
    String factory;

    public Work(String name,int age,String factory) {
        // TODO 自动生成的构造函数存根
        super(name, age);
        this.factory = factory;
    }

    @Override
    public String toString() {
        return "Worker [factory= " + factory
                + ", name= " + name + ", age=" + age + "]";
    }


}

调用代码 Helloworld6.java

package a51work6;

public class Helloworld6 {
//  主方法
    public static void main(String[] args) {
        Student student1 = new Student("hujianli", 18, "西安电子科技大学");
        Student student2 = new Student("huxiaojian", 19, "清华大学");
        Student student3 = new Student("xiaojian", 20, "复旦大学");

        Work work1 = new Work("胡健力", 20, "迅投");
        Work work2 = new Work("hujian", 22, "富通东方");

//      创建数组
        Person2[] people = { student1,student2,student3,work1,work2 };

//      创建计数器
        int studentcount = 0;
        int workercount = 0;
//      使用临时变量,变量数组
        for (Person2 item:people ) {
            if (item instanceof Work) {
                workercount++;

            } else if (item instanceof Student) {
                studentcount++;
            }
        }

    System.out.printf("工作人员人数:%d,学生人数:%d \n",workercount,studentcount);
    System.out.println(work1.toString());
    System.out.println(work2.toString());

    System.out.println(student1.toString());
    System.out.println(student2.toString());
    System.out.println(student3.toString());



    }
}

输出结果如下:

工作人员人数:2,学生人数:3
Worker [factory= 迅投, name= 胡健力, age=20]
Worker [factory= 富通东方, name= hujian, age=22]
Student [school=西安电子科技大学, name=hujianli, age=18]
Student [school=清华大学, name=huxiaojian, age=19]
Student [school=复旦大学, name=xiaojian, age=20]