第五章 面向对象——多态 课后作业:

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

猜你喜欢

转载自blog.csdn.net/gz98411/article/details/80172110