package cm.abstracts.application;
public class InstanceFfourtyEight {
public static void main(String[] args) {
//主类主方法,所有程序入口,执行起点
// 分布4:各个子类的具体操作由主类主方法发出命令
//通过创建对应子类对象的向上转型,实例父类(抽象类)对象
//通过创建Robot类对象的向上转型,创建父类对象
Abstract a = new Robot2();
a.program();
//通过创建对应Human类对象的向上转型,创建抽象类对象
Abstract b = new Human2();
b.program();
//通过创建对应Pig类对象的向上转型,创建抽象类对象
Abstract c = new Pig2();
c.program();
}
}
/** 按照以上的设计思路,实际上可以对程序做进一步的扩展,现在假设有3类事物:机器人(Robot)、人类(Human)
、猪(pig)
现在要求实现对以上事物的控制,即可以控制机器人、人类、猪的操作行为,具体化每个实际事物类,即(覆写抽象类中的抽象方法)。
再由父类(抽象类)中的普通方法直接调用本类中的抽象方法,最后由行为类(创建实例化对象)发出具体的操作命令,即主类主方法。
分步1:首先应该对行为进行抽象,
分布2:对应每种行为创建出具体的对应子类
分步3:具体化对应子类,即覆写抽象类中的所有抽象方法
分布4:子类的具体操作由主类主方法发出命令
*/
//分步1:首先应该对行为进行抽象,声明一个抽象类,必有子类,类中普通方法直接调用该抽象类的抽象方法
abstract class Abstract{
//定义各个事物共有的共同的属性/特征,常量,由此保存在底层的公共数据区
public static final String EAT = "大家都在吃饭";
public static final String SLEEP = "大家正在休息";
public static final String WORK = "大家正在工作";
//创建抽象类中的一个普通方法
public void program() {
//普通方法直接调用本抽象类中的抽象方法
this.eat();
this.sleep();
this.work();
}
//分步1:首先应该对每种行为/功能进行抽象化
protected abstract void eat();
protected abstract void sleep();
protected abstract void work();
}
//三个实际研发对象,即三个实际事物三个子类,每个研发事物(子类)覆写父类中的抽象方法,由三个子类分别决定其具体内容
//创建子类1:机器人(Robot)
//分步2:对应每种行为创建出具体的对应子类
class Robot2 extends Abstract{
//分步3:具体化对应子类,即覆写抽象类中的所有抽象方法
@Override
public void work() {
System.out.println("机器人正在努力工作!");
}
@Override
public void sleep() {
System.out.println("我们都知道,机器人无法睡觉无法休息的");
}
@Override
public void eat() {
System.out.println("机器人正在补充能量!");
}
}
//分布2:对应每种行为创建出具体的对应子类
//创建子类2:人类(Human)
class Human2 extends Abstract{
//分步4:具体化对应子类,即覆写抽象类中的所有抽象方法
@Override
public void work() {
System.out.println("人为了梦想在努力工作!");
}
@Override
public void sleep() {
System.out.println("人类正在睡觉休息!");
}
@Override
public void eat() {
System.out.println("人类正在吃饭!");
}
}
//分布2:对应每种行为创建出具体的对应子类
//创建子类3:猪(Pig)
class Pig2 extends Abstract{
//分步4:具体化对应子类,即覆写抽象类中的所有抽象方法
@Override
public void work() {
System.out.println("猪猪每天除了吃就是睡,无法工作噢");
}
@Override
public void sleep() {
System.out.println("猪在睡觉养膘!");
}
@Override
public void eat() {
System.out.println("猪猪正在吃饭!");
}
}
彦舜原创,优快云首发