多态数组的综合案例练习
–基于老韩的练习
直接上代码
main方法用来做总执行
public class main {
public static void main(String[] args) {//main方法
// main方法用来执行项目
Print print = new Print();
print.print();
}
}
创建一个父类Person
class Person {//父类
private String name;
private char gender;
private int age;
//父子类三种共有属性
public Person() {
}
//无参构造器
//构造器
public Person(String name, char gender, int age) {
this.name = name;
this.gender = gender;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public char getGender() {
return gender;
}
public void setGender(char gender) {
this.gender = gender;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
//重写Object类的toString方法
@Override
public String toString() {
return "name='" + name + '\'' +
", gender=" + gender +
", age=" + age;
}
}
创建Student子类
class Student extends Person {//Person的子类
private String studentID;
//构造器
public Student(String name, char gender, int age, String studentID) {
super(name, gender, age);
this.studentID = studentID;
}
public String getStudentID() {
return studentID;
}
public void setStudentID(String studentID) {
this.studentID = studentID;
}
public String study() {
return "好好学习";
}
// play方法
public String play(String play) {
return this.getName() + play;
}
//重写父类toString方法 添加了特有属性
@Override
public String toString() {
return "Student" + super.toString() +
", studentID='" + studentID + '\'';
}
}
创建Teacher子类
class Teacher extends Person {//Person的子类
private double work_age;
//构造器
public Teacher(String name, char gender, int age, double work_age) {
super(name, gender, age);
this.work_age = work_age;
}
public double getWork_age() {
return work_age;
}
public void setWork_age(double work_age) {
this.work_age = work_age;
}
public String teach() {
return "认真教书";
}
// play方法
public String play(String play) {
return this.getName() + play;
}
//重写父类toString方法 添加了特有属性
@Override
public String toString() {
return "Teacher" + super.toString() +
", work_age=" + work_age;
}
}
最后写一个测试类Print,用来完成所有题目要求的的指令,最后用main直接调用即可
class Print {//输出类
public void print() {
// 创建多态数组
Person[] person = new Person[4];
person[0] = new Student("eva", '女', 25, "2017225");
person[1] = new Student("kk", '男', 30, "2018223");
person[2] = new Teacher("13", '女', 28, 6.5);
person[3] = new Teacher("laohan", '男', 35, 9.5);
// 冒泡
Person[] personTemp = new Person[1];
personTemp[0] = null;
for (int i = 0; i < person.length - 1; i++) {
for (int j = 0; j < person.length - 1 - i; j++) {
if (person[j].getAge() < person[j + 1].getAge()) {
personTemp[0] = person[j + 1];
person[j + 1] = person[j];
person[j] = personTemp[0];
}
}
}
// 循环输出
for (int i = 0; i < person.length; i++) {
if (person[i] instanceof Student) {
System.out.println(person[i] + "\t" +
((Student) person[i]).play("玩足球") + "\t" + ((Student) person[i]).study());
} else if (person[i] instanceof Teacher) {
System.out.println(person[i] + "\t" +
((Teacher) person[i]).play("下象棋") + "\t" + ((Teacher) person[i]).teach());
}
}
}
}
最终代码
public class main {
public static void main(String[] args) {//main方法
// main方法用来执行项目
Print print = new Print();
print.print();
}
}
class Print {//输出类
public void print() {
// 创建多态数组
Person[] person = new Person[4];
person[0] = new Student("eva", '女', 25, "2017225");
person[1] = new Student("kk", '男', 30, "2018223");
person[2] = new Teacher("13", '女', 28, 6.5);
person[3] = new Teacher("laohan", '男', 35, 9.5);
// 冒泡
Person[] personTemp = new Person[1];
personTemp[0] = null;
for (int i = 0; i < person.length - 1; i++) {
for (int j = 0; j < person.length - 1 - i; j++) {
if (person[j].getAge() < person[j + 1].getAge()) {
personTemp[0] = person[j + 1];
person[j + 1] = person[j];
person[j] = personTemp[0];
}
}
}
// 循环输出
for (int i = 0; i < person.length; i++) {
if (person[i] instanceof Student) {
System.out.println(person[i] + "\t" +
((Student) person[i]).play("玩足球") + "\t" + ((Student) person[i]).study());
} else if (person[i] instanceof Teacher) {
System.out.println(person[i] + "\t" +
((Teacher) person[i]).play("下象棋") + "\t" + ((Teacher) person[i]).teach());
}
}
}
}
class Person {//父类
private String name;
private char gender;
private int age;
//父子类三种共有属性
public Person() {
}
//无参构造器
//构造器
public Person(String name, char gender, int age) {
this.name = name;
this.gender = gender;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public char getGender() {
return gender;
}
public void setGender(char gender) {
this.gender = gender;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
//重写Object类的toString方法
@Override
public String toString() {
return "name='" + name + '\'' +
", gender=" + gender +
", age=" + age;
}
}
class Student extends Person {//Person的子类
private String studentID;
//构造器
public Student(String name, char gender, int age, String studentID) {
super(name, gender, age);
this.studentID = studentID;
}
public String getStudentID() {
return studentID;
}
public void setStudentID(String studentID) {
this.studentID = studentID;
}
public String study() {
return "好好学习";
}
// play方法
public String play(String play) {
return this.getName() + play;
}
//重写父类toString方法 添加了特有属性
@Override
public String toString() {
return "Student" + super.toString() +
", studentID='" + studentID + '\'';
}
}
class Teacher extends Person {//Person的子类
private double work_age;
//构造器
public Teacher(String name, char gender, int age, double work_age) {
super(name, gender, age);
this.work_age = work_age;
}
public double getWork_age() {
return work_age;
}
public void setWork_age(double work_age) {
this.work_age = work_age;
}
public String teach() {
return "认真教书";
}
// play方法
public String play(String play) {
return this.getName() + play;
}
//重写父类toString方法 添加了特有属性
@Override
public String toString() {
return "Teacher" + super.toString() +
", work_age=" + work_age;
}
}