* (抽象)写一个人类,类中有属性:姓名,年龄,性别,一个构造方法属性初始化,
* 一个出行的方法,但是这个方法描绘不清楚(因为每个人的出行方式是不一样)
* ,所以抽象此方法再写一个学生类继承人类型,类中有属性:学生的学号,一个
* 构造方法给属性赋值(父类的属性super()赋值),重写父类的出行方法:描绘
* “学生骑自行车出行”再写一个工人类继承人类型,类中有属性:工人的工作证号,
* 一个构造方法给属性赋值(父类的属性super()赋值),重写父类的出行方法:
* 描绘“工人坐公交车出行”再写一个老板类继承人类型,类中有属性:老板的私家车号,
* 一个构造方法给属性赋值(父类的属性super()赋值),重写父类的出行方法:描绘
* “老板开车出行”写一个测试类,定义一个人类数组,长度为3,分别生成学生对性,
* 工人对象,老板对象,调用对象的出行方法实现多态
*/
package com.abs;
public class Test {
public static void main(String[] args) {
// 創建數組
Person[] person = new Person[3];
// 創建學生對象并賦值
/*Student student =(Student) person[0];
student.num=12;*/
person[0] = new Student("小剛",34,"男",12);
/*person[0].name = "小剛";
person[0].age = 3;
person[0].sex = "女";*/
// 創建工人對象并賦值
person[1] = new Worker("中鋼",45,"女",34);
/*person[1].name = "中剛";
person[1].age = 1;
person[1].sex = "男";*/
// 創建老版對象并賦值
person[2] = new Boss("大綱",32,"中",32);
/*person[2].name = "大剛";
person[2].age = 15;
person[2].sex = "中";*/
// 方法調用
Manager manager = new Manager();
manager.show(person);
}
}
package com.abs;
public class Manager {
public void show(Person[] person){ //數組做對象參數
for (int i = 0; i < person.length; i++) {
person[i].walking();
}
}
}
package com.abs;
public abstract class Person {
//屬性
String name;
int age;
String sex;
//無參構造方法
public Person(){
}
//有參構造方法
public Person(String name,int age,String sex){
this.name=name;
this.age=age;
this.sex=sex;
}
//定義抽象出行方法
public abstract void walking();
}
package com.abs;
public class Student extends Person {
//定義屬性
int num;
//無參構造方法
public Student(){
}
//有參構造方法
public Student(String name,int age,String sex,int num){
super(name,age, sex);
this.num=num;
}
public void walking(){
System.out.println("學生"+super.name+"今年"+super.age+"歲,性別"+super.sex+",學號是"+this.num+",騎自行車出行");
}
}
package com.abs;
public class Worker extends Person {
// 定義屬性
int numw;
// 無參構造方法
public Worker() {
}
// 有參構造方法
public Worker(String name, int age, String sex, int numw) {
super(name, age, sex);
this.numw = numw;
}
public void walking() {
System.out.println("工人"+super.name+"今年"+super.age+"歲,性別"+super.sex+",工作證號"+this.numw+",工人坐公交车出行");
}
}
package com.abs;
public class Boss extends Person {
// 定義屬性
int numc;
// 無參構造方法
public Boss() {
}
// 有參構造方法
public Boss(String name, int age, String sex, int numc) {
super(name, age, sex);
this.numc = numc;
}
public void walking() {
System.out.println("老版"+super.name+"今年"+super.age+"歲,性別"+super.sex+",私家車號"+this.numc+",老板开车出行");
}
}