【韩顺平Java笔记】第8章:面向对象编程(中级部分)【354-358】
354. 355. 本章作业14 15
Person.java
package com.m.homework13;
public class Person {
private String name;
private int age;
private char gender; //性别
public Person(String name, int age, char gender) {
this.name = name;
this.age = age;
this.gender = gender;
}
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;
}
public void play(){
System.out.print(name + "爱玩");
}
public char getGender() {
return gender;
}
public void setGender(char gender) {
this.gender = gender;
}
public void printInfo(){
System.out.println("姓名:" + name);
System.out.println("年龄:" + age);
System.out.println("性别:" + gender);
}
}
Student.java
package com.m.homework13;
public class Student extends Person {
private String stuId; //学号
public Student(String name, int age, char gender, String stuId) {
super(name, age, gender);
this.stuId = stuId;
}
public String getStuId() {
return stuId;
}
public void setStuId(String stuId) {
this.stuId = stuId;
}
public void study(){
System.out.println("我承诺,我会好好学习");
}
@Override
public void play() {
super.play();
System.out.println("足球");
}
@Override
public void printInfo() {
System.out.println("学生的信息:");
super.printInfo();
System.out.println("学号:" + stuId);
}
}
Teacher.java
package com.m.homework13;
public class Teacher extends Person{
private int workAge; //工龄
public Teacher(String name, int age, char gender, int workAge) {
super(name, age, gender);
this.workAge = workAge;
}
@Override
public void printInfo() {
System.out.println("老师的信息:");
super.printInfo();
System.out.println("工龄:" + workAge);
}
public void teach(){
System.out.println("我承诺,我会认真教学");
}
@Override
public void play() {
super.play();
System.out.println("象棋");
}
}
Homework13.java
package com.m.homework13;
public class Homework13 {
public static void main(String[] args) {
Person[] persons = new Person[4];
persons[0] = new Student("田所浩二", 24, '男', "114514");
persons[1] = new Student("波奇酱", 18, '女', "1919" );
persons[2] = new Teacher("我修院", 26, '男', 1);
persons[3] = new Teacher("德川", 26, '男', 1);
Homework13 homework13 = new Homework13();
homework13.bubbleSort(persons);
homework13.printResults(persons);
}
//自动转型的方法
public void test(Person p){
if(p instanceof Student){
((Student) p).study();
}else if(p instanceof Teacher){
((Teacher) p).teach();
}
}
//冒泡排序方法
public void bubbleSort(Person[] persons){
//冒泡排序按年龄排序
Person tmp = null; //冒泡排序用的临时引用
//从i到倒数第二个元素,方便给最后一个元素交换
for(int i = 0; i < persons.length - 1 ; i++){
for(int j = 0; j < persons.length - i - 1; j++){
if(persons[j].getAge() > persons[j+1].getAge()){
tmp = persons[i];
persons[i] = persons[j];
persons[j] = tmp;
}
}
}
}
//打印Person数组信息
public void printResults(Person[] persons){
//打印数组,使用向下转型
for(int i = 0; i < persons.length; i++){
System.out.println("-------------------------");
if(persons[i] instanceof Student){
((Student)persons[i]).printInfo();
((Student)persons[i]).study();
test(persons[i]);
}
if(persons[i] instanceof Teacher){
((Teacher)persons[i]).printInfo();
((Teacher)persons[i]).teach();
((Teacher)persons[i]).play();
}
}
}
}
运行结果:
-------------------------
学生的信息:
姓名:波奇酱
年龄:18
性别:女
学号:1919
我承诺,我会好好学习
我承诺,我会好好学习
-------------------------
学生的信息:
姓名:田所浩二
年龄:24
性别:男
学号:114514
我承诺,我会好好学习
我承诺,我会好好学习
-------------------------
老师的信息:
姓名:我修院
年龄:26
性别:男
工龄:1
我承诺,我会认真教学
我修院爱玩象棋
-------------------------
老师的信息:
姓名:德川
年龄:26
性别:男
工龄:1
我承诺,我会认真教学
德川爱玩象棋
356. 本章作业15
无参构造器先执行this(“hello”),然后进入有参构造器。