面向对象第五章课后作业

1.编码创建一个打印类Printer,定义抽象方法print();创建两个子类,即针式打印机类DotMatrixPrinter和喷墨打印机类LnkpetPrinter,并在各自类中重写方法print(),编写测试类实现两种打印机打印,在添加一个激光打印机子类LaserPrinter,重写方法print(),修改测试类实现该打印机打印。

package com.homework.demo.test5_5;

/**
 * 打印机抽象父类
 * @author suixin
 *
 */
public abstract class Printer {
	
	/**
	 * 抽象打印方法
	 */
	public abstract void print();
	
}


package com.homework.demo.test5_5;

/**
 * 针式打印机类
 * @author suixin
 *
 */
public class DotMatrixPrinter extends Printer{

	@Override
	public void print() {
		// TODO Auto-generated method stub
		System.out.println("针式打印机");
	}
	
}

package com.homework.demo.test5_5;

/**
 * 喷墨打印机类
 * @author suixin
 *
 */
public class InkpetPrinter extends Printer{

	@Override
	public void print() {
		// TODO Auto-generated method stub
		System.out.println("喷墨打印机");
	}

	
}


package com.homework.demo.test5_5;

/**
 * 激光打印机类
 * @author suixin
 *
 */
public class LaserPrinter extends Printer{

	@Override
	public void print() {
		// TODO Auto-generated method stub
		System.out.println("激光打印机");
	}

	

}


package com.homework.demo.test5_5;

public class Test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		Printer p = new DotMatrixPrinter(); //针式打印机
		p.print();
		
		Printer p1 = new InkpetPrinter();  //喷墨打印机
		p1.print();
		
		Printer p2 = new LaserPrinter();  //激光打印机
		p2.print();
	}
	
}


2.请使用多态实现以下需求,牛犇有两个很要好的朋友,一个是中国的王小强,喜欢吃四川菜,练太极拳,另一个是美国的约翰,喜欢吃披萨,打橄榄球,每当朋友来拜访时,牛犇都会按各自的喜好招待他们。

package com.homework.demo.test5_6;

/**
 * 主人类
 * @author suixin
 *
 */
public abstract class Master {
	
	String masterName = "牛犇"; //主人姓名
	
	String name = " "; //客人姓名
	
	String eat = " "; //吃的菜
	
	String hobby = " ";  //客人的爱好
	
	public abstract void serve(); //抽象招待方法
	
	public void serve1(Master master) {
		if (master instanceof Guest1) {  //如果是王小强
			Guest1 guest1 = (Guest1)master;
			guest1.serve();
		}else if (master instanceof Guest2) {  //如果是约翰
			Guest2 guest2 = (Guest2)master;
			guest2.serve();
		}
	}
}

package com.homework.demo.test5_6;

/**
 * 王小强类
 * @author suixin
 *
 */
public class Guest1 extends Master{
	
	/**
	 * 招待王小强的方法
	 */
	public void serve() {
		
		super.name = "王小强";
		
		super.hobby = "练太极拳";
		
		super.eat = "吃四川菜";
		
		System.out.println(super.masterName + "在招待" + super.name + "一起" + super.eat+","+super.hobby);
	}
}

package com.homework.demo.test5_6;

/**
 * 约翰类
 * @author suixin
 *
 */
public class Guest2 extends Master {

	@Override
	public void serve() {
		// TODO Auto-generated method stub

		super.name = "约翰";

		super.hobby = "打橄榄球";

		super.eat = "吃披萨";

		System.out.println(super.masterName + "在招待" + super.name + "一起" + super.eat + ","+ super.hobby);
	}

}

package com.homework.demo.test5_6;
/**
 * 测试类
 */
import java.util.Scanner;

public class Test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scanner = new Scanner(System.in);
		System.out.print("请问是谁哪个朋友来拜访(1.王小强  2.约翰):");
		if (scanner.nextInt() == 1) {  //王小强时
			Master master = new Guest1();
			master.serve1(master);
		}else {							//约翰
			Master master = new Guest2();
			master.serve1(master);
		}
		
	}

}

猜你喜欢

转载自blog.csdn.net/suixinCaesar/article/details/80170232