第五章 多态

1,编辑一个抽象方法子类继承重写打印方法

package com.bdqn.demo;
abstract class Printer{//父类打印
	public abstract void print();//打印方法
}
class DotMatrixPrinter extends Printer{
	public void print() {//打印方法
		System.out.println("针式打印机正在打印");
	}
}
class InkPetPrinter extends Printer{
	public void print() {
		System.out.println("喷墨打印机正在打印");
	}
	
}
class LaserPrinter extends Printer{
	public void print() {
		System.out.println("激光打印机正在打印");
	}
}
public class PrinterTest {
    public static void main(String[] args) {
    	 Printer p=new  DotMatrixPrinter();//指向子类对象
    	 p.print();//调用方法
    	 Printer p1=new InkPetPrinter ();
    	 p1.print();
    	 Printer p2=new LaserPrinter ();
    	 p2.print();
	}
}

2,牛犇有两个朋友每当朋友拜访时牛犇都会按各人喜好招待他们

package com.baqn.demo;

import java.util.Scanner;

abstract class Friend{//父类朋友
	protected String name;//名字
	protected String dish;//菜
	public Friend(String name,String dish) {//构造
		this.name=name;
		this.dish=dish;
	}
	public String getDish() {//获取菜名
		return dish;
	}
	public String getName() {//获取姓名
		return name;
	}
	public abstract void eat();//抽象方法
	
}
class China extends Friend{//中国朋友
	public China(String name,String dish) {
		super(name,dish);//传参
	}
	public void eat() {//吃方法
		System.out.println("我的中国朋友"+this.name+"正在吃"+this.dish);
	}
	public void playBox() {//玩方法
		System.out.println("打太极拳!");
	}
}
class America extends Friend{//美国朋友
	public America(String name,String dish) {
		super(name,dish);
	}
	public void eat() {//吃方法
		System.out.println("我的美国朋友"+this.name+"正在吃"+this.dish);
	}
	public void playBall() {//玩方法
		System.out.println("打橄榄球!");
	}
}
class Mas{
	private String name;

	public Mas(String name) {
		this.name=name;
	}
	public String getName() {
		return name;
	}
	public Friend getFriend(String choose) {
		switch(choose) {
		case "1"://如果选1返回中国朋友
			return new China("王小强","四川菜");
		case "2"://如果选2返回美国朋友
			return new America("约翰","披萨");
		}
			return null;
	}
	public void play(Friend f) {//父类强转子类调用子类特有方法
		if(f instanceof China) {
			China c=(China)f;
			c.playBox();
		}else {
			America a=(America)f;
			a.playBall();
		}
	}
	
	
}
public class FriendTest {
    public static void main(String[] args) {
		Scanner input =new Scanner(System.in);
		System.out.print("请选择要招待的朋友:(1,中国朋友2,美国朋友)");
		String choose=input.next();
		Mas m=new Mas("牛犇");
		Friend f=m.getFriend(choose);
		f.eat();
		m.play(f);
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值