1.首先创建一个Person类,作为超类存在public class Person { String name; int age; String address; void sayHi(){ System.out.println("我是"+name+"今年"+age+"岁了,家住"+address); } Person(String name,int age,String address){ this.name = name; this.age = age; this.address = address; } }
2.创建Teacher类,Doctor类,Student类,三个类都继承Person类
public class Teacher extends Person{ double salary; //工资 Teacher(String name,int age,String address,double salary){ super(name,age,address); this.salary = salary; } }
public class Doctor extends Person{ String level; //职称 Doctor(String name,int age,String address,String level){ super(name,age,address); this.level = level; } }
public class Student extends Person{ String stuId; //学号 Student(String name,int age,String address,String stuId){ super(name,age,address); this.stuId = stuId; } }
3.创建测试类Test,将使用向上造型的方法,超类引用指向派生类对象,减少代码的重复
public class Test { public static void main(String[] args) { Person[] ps = new Person[5]; ps[0] = new Student("zhangsan",25,"lf","1111"); ps[1] = new Student("lisi",26,"jms","2222"); ps[2] = new Teacher("wangwu",27,"handan",1000.0); ps[3] = new Teacher("zhaoliu",28,"shanghaoo",888.2); ps[4] = new Doctor("sunqi",27,"jms","主治医师"); for(int i=0;i<ps.length;i++){ //遍历数组 ps[i].sayHi(); System.out.println(ps[i].name); } } }
如果不进行向上造型,会造成代码的重复,具体写法如下:
public class Test { public static void main(String[] args) { Student[] stu = new Student[2]; stu[0] = new Student("zhangsan",25,"lf","1111"); stu[1] = new Student("lisi",26,"jms","2222"); for(int i=0;i<stu.length;i++) { //遍历数组 stu[i].sayHi(); System.out.println(stu[i].name); } Teacher[] tea = new Teacher[2]; tea[0] = new Teacher("wangwu",27,"handan",1000.0); tea[1] = new Teacher("zhaoliu",28,"shanghaoo",888.2); for(int i=0;i<stu.length;i++) { //遍历数组 tea[i].sayHi(); System.out.println(tea[i].name); } Doctor doc = new Doctor("sunqi",27,"jms","主治医师"); doc.sayHi(); System.out.println(doc.name); } }
07-10
1510