package Java_base_study.homework;
public class Homework06 {
public static void main(String[] args) {
//实例化Person对象"唐僧",要求一般情况下用Horse作为交通工具,遇到大河时用Boat作为交通工具
Horse bailong = new Horse();
Person tang=new Person("唐僧", bailong);
tang.passriver();
tang.ride();
}
}
interface Vehicles {
void work();
}
class Horse implements Vehicles {
@Override
public void work() {
System.out.println("使用马");
}
}
class Boat implements Vehicles {
@Override
public void work() {
System.out.println("使用船");
}
}
class industry {
//白龙马不是一直换的,但是船要一直换,static 方法只能调用static 变量,所以白龙马要申明为static
private static Horse bailong = new Horse();
//由于是工具类所以方法一般设为static,这样调用方法不用创建方法
//两个方法分别获得交通工具Horse和Boat
public static Horse gethorse() {
return bailong;
}
public static Boat getboat() {
return new Boat();
}
}
class Person {
public String name;
public Vehicles vehicles;
public Person(String name, Vehicles vehicles) {
this.name = name;
this.vehicles = vehicles;
}
//这里涉及到一个编程思路,就是可以把具体的要求,封装成方法->这里就是编程思想
//思考一个问题,如何不浪费,在构建对象时,传入的交通工具对象->动脑筋
public void passriver(){
//第一层的想法:既然过河就给艘船呗
// Boat boat=industry.getboat();
// boat.work();
//第二层想法:假如传过来的vehicles是null的该怎么办?
// if(vehicles==null){
// //利用多态思想
// vehicles=industry.getboat();
// }
// vehicles.work();
//第三层想法:上面的那层假如传过来的vehicles是null的还好
//但是假如传过去的是bailong,那么调用vehicles.work()相当于用白龙马过河,明显不对,需要加上类型判断
if((vehicles instanceof Horse)){
vehicles=industry.getboat();
}
vehicles.work();
}
public void ride(){
//第一层的想法:既然正常走路就给白龙马呗
// Horse bailong=industry.gethorse();
// bailong.work();
//第二层想法假如传过来的vehicles是null的该怎么办?
if(vehicles instanceof Boat){
//利用多态思想
vehicles=industry.gethorse();
}
vehicles.work();
}
}
唐僧取经小代码
最新推荐文章于 2021-12-11 21:53:08 发布