1.编码创建一个打印机类Printer,定义抽象方法print( );创建俩个子类,即针式打印机类DotMatrixPrinter和喷墨打印机类InkpetPringter,并在各自类中重写方法print( ),编写测试类实现俩种打印机打印;在添加一个激光打印机LaserPrinter,重写方法print( ),修改测试类实现该打印机打印。
/** * 打印机类 * @author lenovo * */ public abstract class Printer { /** * 抽象方法 */ public abstract void print(); } /** * 针式打印机类 * @author lenovo * */ public class DotMatirixPrinter extends Printer { public void print(){ System.out.println("针式打印机"); } } /** * 喷墨打印机类 * @author lenovo * */ public class InkpetPrinter extends Printer { public void print() { System.out.println("喷墨打印机类"); } } /* * 激光打印类 */ public class LaserPrinter extends Printer { public void print() { System.out.println("激光打印机"); } } /** * 向上转型 * @author lenovo * */ public class TestPrinter { public static void main(String[] args) { Printer printer = new DotMatirixPrinter(); printer.print(); Printer printer1 = new InkpetPrinter(); printer1.print(); Printer printer2 = new LaserPrinter(); printer2.print(); } }
2.请使用多态实现以下需求:牛犇有俩个很要好的朋友,一个是中国的王小强,喜欢吃四川菜,练太极拳;另一个是美国的约翰,喜欢吃比萨,打橄榄球。每当朋友来拜访牛犇时,牛犇都会按各人的喜好招待他们。
/** * 朋友类 * @author lenovo * */ public abstract class Friend { protected String name; //姓名 protected String vegetable; //菜名 protected String movement; //动作 /** * 有参构造 * @param name * @param vegetable * @param movement */ public Friend(String name, String vegetable, String movement) { super(); this.name = name; this.vegetable = vegetable; this.movement = movement; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getVegetable() { return vegetable; } public void setVegetable(String vegetable) { this.vegetable = vegetable; } public String getMovement() { return movement; } public void setMovement(String movement) { this.movement = movement; } public abstract void eat(); } public class Chian extends Friend { /** * 有参构造 * @param name * @param vegetable * @param movement */ public Chian(String name, String vegetable, String movement) { super(name, vegetable, movement); // TODO Auto-generated constructor stub } public void eat() { System.out.println("牛犇俩个好朋友:一个是中国的:"+getName()+",喜欢吃:"+getVegetable()+",练:"+getMovement()); } } public class America extends Friend { /** * 有参构造 * @param name * @param vegetable * @param movement */ public America(String name, String vegetable, String movement) { super(name, vegetable, movement); // TODO Auto-generated constructor stub } public void eat() { System.out.println("牛犇俩个好朋友:一个是:"+getName()+",喜欢吃:"+getVegetable()+",练:"+getMovement()); } } import java.util.Scanner; /** * 测试类 * @author lenovo * */ public class Test { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.print("请输入访问人的姓名:"); String name = input.next(); if(name.equals("王小国")) { Friend fnd = new Chian("王小国","四川菜","太极"); fnd.eat(); }else if(name.equals("约翰")) { Friend fnd1 = new America("约翰", "比萨", "橄榄球"); fnd1.eat(); }else { System.out.println("没有找到此人!"); } } }