博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2017.12.1T19_B2_5zuoye
阅读量:5043 次
发布时间:2019-06-12

本文共 5666 字,大约阅读时间需要 18 分钟。

package com.whxiong.work05;

import java.util.Scanner;

import com.whxiong.work05_2.Friends;

import com.whxiong.work05_2.Master;

/**

 * 第五章课后习题测试类
 * @param args
 */
public class Demo {
 public static void main(String[] args) {
  Scanner input = new Scanner(System.in);

  System.out.println("课后习题第五题");

  System.out.println("************************************");
  /**
   * 实例化ChoosePrinter
   */
  ChoosePrinter printer01 = new ChoosePrinter();
  /**
   * 选择打印机类型
   */
  System.out.println("请选择您要使用的打印机:1.针式打印机 2.喷墨打印机 3.激光打印机");
  int typeid = input.nextInt();
  Printer printer = printer01.gettype(typeid);
  if (printer != null) {
   printer01.print(printer);
  } else {
   System.out.println("对不起,没有该类型打印机!");
  }
  
  System.out.println();
  System.out.println("课后习题第六题");
  System.out.println("************************************");
  Master master=new Master("牛犇");
  System.out.println("请选择牛犇朋友的国家:1.中国  2.美国");
  int chooseCountry=input.nextInt();
  Friends friends=master.Treat(chooseCountry);
  if(friends!=null){
   System.out.println("谢谢"+master.getName()+"的热情招待!");
  }else{
   System.out.println("不好意思,牛犇不认识您!");
  }

********************************************************

package com.whxiong.work05;

/**
 * Frinends 牛犇的朋友类
 * @author whx
 */
public abstract class Friends {
 
 private String country; //国家
 private String name; //名字
 private String eat;  //食物
 private String play; //运动
 /**
  * 带参构造
  * @param country
  * @param name
  * @param eat
  * @param play
  */
 public Friends(String country,String name, String eat, String play) {
  super();
  this.country=country;
  this.name = name;
  this.eat = eat;
  this.play = play;
 }
 public String getCountry() {
  return country;
 }
 public void setCountry(String country) {
  this.country = country;
 }
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public String getEat() {
  return eat;
 }
 public void setEat(String eat) {
  this.eat = eat;
 }
 public String getPlay() {
  return play;
 }
 public void setPlay(String play) {
  this.play = play;
 }
 /**
  * 定义抽象类的Eat方法
  */
 public abstract void Eat();
 /**
  * 定义抽象类的Play方法
  */
 public abstract void Play();

}

/**
 * America 美国朋友 子类
 * @author whx
 */
 class America extends Friends {
 /**
  * 调用父类中的带参构造
  * @param country
  * @param name
  * @param eat
  * @param play
  */
 public America(String country,String name, String eat, String play) {
  super(country,name, eat, play);
 }

 @Override

 public void Eat() {
  {
   System.out.println("我叫"+this.getName()+",我是"+this.getCountry()
     +"人"+"\n\t我喜欢吃"+this.getEat());
  }
  
 }

 @Override

 public void Play() {
  System.out.println("\t我喜欢的运动是"+this.getPlay());
 }
}
 /**
  * China 中国朋友 子类
  * @author whx
  */
  class China extends Friends{
  /**
   * 调用父类中的带参构造
   * @param country
   * @param name
   * @param eat
   * @param play
   */
  public China(String country,String name, String eat, String play) {
   super(country,name, eat, play);
  }

  @Override

  public void Eat() {
   
    System.out.println("我叫"+this.getName()+",我是"
   +this.getCountry()+"人"+"\n\t我喜欢吃"+this.getEat());
   
   
  }

  @Override

  public void Play() {
   System.out.println("\t我喜欢的运动是"+this.getPlay());
  }
 }

  /**

   * Master 主人牛犇 类
   * @author whx
   */
   class Master {
   private String name;//主人姓名
   /**
    * 带参构造
    * @param name
    */
   public Master(String name){
    this.name=name;
   }
   
   public String getName() {
    return name;
   }

   public void setName(String name) {

    this.name = name;
   }

   /**

    * @param chooseCountry选择国家
    * @return
    */
   public Friends Treat(int chooseCountry){
    Friends friends=null;
    if(chooseCountry==1){
     friends=new China("中国","王小强", "四川菜", "太极拳");
     friends.Eat();
     friends.Play();
    }
    if(chooseCountry==2){
     friends=new America("美国","约翰", "比萨", "橄榄球");
     friends.Eat();
     friends.Play();
    }
    return friends;
   }*************************************************

package com.whxiong.work05;

/**
 * Printer 创建打印机类
 * abstract 抽象不可被实例化
 * @author whx
 */
public abstract class Printer {
 //打印机类型
 private String type;
 /**
  * 带参构造
  * @param type
  */
 public Printer(String type){
  this.type=type;
 }
 
 public String getType() {
  return type;
 }

 public void setType(String type) {

  this.type = type;
 }

 /**

  * 定义抽象方法print
  */
 public abstract void print();
}
 /**
  * DotMatrixPrinter 针式打印机 子类
  * @author whx
  */
 class DotMatrixPrinter extends Printer {
 
  public DotMatrixPrinter(String type) {
   super(type);
  }
 
  @Override
  public void print() {
   System.out.println("***您选择的打印机是" + this.getType() + "***");
  }
 }
 
 /**
  * InkpetPrinter 喷墨打印机 子类
  *
  * @author whx
  */
 class InkpetPrinter extends Printer {
 
  public InkpetPrinter(String type) {
   super(type);
  }
 
  @Override
  public void print() {
   System.out.println("***您选择的打印机是" + this.getType() + "***");
  }
 }
 
 /**
  * LaserPrinter 激光打印机 子类
  * @author whx
  */
 class LaserPrinter extends Printer {
 
  public LaserPrinter(String type) {
   super(type);
  }
 
  @Override
  public void print() {
   System.out.println("***您选择的打印机是" + this.getType() + "***");
  }
 
 }
 /**
  * ChoosePrinter 选择打印机
  * @author whx
  */
  class ChoosePrinter {
  /**
   * 选择打印机类型
   * @param id打印机编号
   */
  public Printer gettype(int typeid) {
   Printer printer = null;
   if (typeid == 1) {
    printer = new DotMatrixPrinter("针式打印机");
   }
   if (typeid == 2) {
    printer = new DotMatrixPrinter("喷墨打印机");
   }
   if (typeid == 3) {
    printer = new DotMatrixPrinter("激光打印机");
   }
   return printer;
  }

  /**

   * 打印机开始打印
   * @param printer
   */
  public void print(Printer printer) {
   /**
    * 判断对象printer是InkpetPrinter类型
    */
   if (printer instanceof InkpetPrinter) {
    /**
     * 由于printer是父类对象,强制转换
     */
    InkpetPrinter ink = (InkpetPrinter) printer;
    ink.print();
   }
   /**
    * 判断对象printer是LaserPrinter类型
    */
   if (printer instanceof LaserPrinter) {
    /**
     * 由于printer是父类对象,强制转换
     */
    LaserPrinter laser = (LaserPrinter) printer;
    laser.print();
   }
   /**
    * 判断对象printer是DotMatrixPrinter类型
    */
   if (printer instanceof DotMatrixPrinter) {
    /**
     * 由于printer是父类对象,强制转换
     */
    DotMatrixPrinter dot = (DotMatrixPrinter) printer;
    dot.print();
   }
  }

 

转载于:https://www.cnblogs.com/xiaoxiao1016/p/8021641.html

你可能感兴趣的文章
HTML5 input控件 placeholder属性
查看>>
使用JAVA如何对图片进行格式检查以及安全检查处理
查看>>
html5实现移动端下拉刷新(原理和代码)
查看>>
iPhone开发中从一个视图跳到另一个视图有三种方法:
查看>>
pytho logging
查看>>
一个Java程序员应该掌握的10项技能
查看>>
c#英文大小写快捷键
查看>>
tpframe免费开源框架又一重大更新
查看>>
一.go语言 struct json相互转换
查看>>
什么是架构设计
查看>>
程序员学习能力提升三要素
查看>>
PHP 微信错误状态返回码说明
查看>>
【4.1】Python中的序列分类
查看>>
ubuntu 移动文件
查看>>
Easy Mock
查看>>
看看 Delphi XE2 为 VCL 提供的 14 种样式
查看>>
Python内置函数(29)——help
查看>>
机器学习系列-tensorflow-01-急切执行API
查看>>
SqlServer 遍历修改字段长度
查看>>
Eclipse快捷键:同时显示两个一模一样的代码窗口
查看>>