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("没有找到此人!");
}
}
}