面向对象_运动员和教练案例实现、测试

53 篇文章 0 订阅
46 篇文章 0 订阅
/*
	教练和运动员案例
		乒乓球运动员和篮球运动员。
		乒乓球教练和篮球教练。
		为了出国交流,跟乒乓球相关的人员需要学习英语。
		
	分析,这个案例中有哪 些抽象类,哪些接口,哪些具体类
	
	分析:从具体到抽象
		运动员:
			乒乓球运动员:
				成员变量:姓名、年龄
				构造方法:无参、带参
				成员方法:吃();、睡觉(){}、学习英语();
			篮球运动员:
				成员变量:姓名、年龄
				构造方法:无参、带参
				成员方法:吃();、睡觉(){}
		教练:
			乒乓球教练:
				成员变量:姓名、年龄
				构造方法:无参、带参
				成员方法:吃();、睡觉(){}、教();、、学习英语();
			篮球教练:
				成员变量:姓名、年龄
				构造方法:无参、带参
				成员方法:吃();、睡觉(){}、教();
		
		由于有共性的功能,所以,提取出一个父类,人类
		
		人类:
			成员变量:姓名、年龄
			构造方法:无参、带参
			成员方法:吃();、睡觉(){}
			
		部分运动员需要学习英语 英语接口
		
		接口:
			学习英语
			
	实现:从抽象到具体
		接口:
			学习英语();
		
		人类:
			成员变量:姓名、年龄
			构造方法:无参、带参
			成员方法:吃();、睡觉(){}
			
		运动员:
			乒乓球运动员:
				继承自人类
				成员方法:学习();、学习英语();
			篮球运动员:
				继承自人类
				成员方法:学习();
			
		教练:
			乒乓球教练:
				继承自人类
				成员方法:教();、学习英语();
			篮球教练:
				继承自人类
				成员方法:教();
		
	使用:具体类实现
*/
//定义学习英语接口
interface SpeakEnglish{
	public abstract void speak();
}

//定义抽象人类
abstract class Person{
	//姓名
	private String name;
	//年龄
	private int age;
	
	//无参、带参
	public Person(){}
	
	public Person(String name,int age){
		this.name = name;
		this.age = age;
	}
	
	//getXxx()/setXxx()
	public String getName(){
		return name;
	}
	
	public void setName(String name){
		this.name = name;
	}
	
	public int getAge(){
		return age;
	}
	
	public void setAge(int age){
		this.age = age;
	}
	
	//吃();
	public abstract void eat();
	
	//睡觉(){}
	public void sleep(){
		System.out.println("人要睡觉");
	}
}

//定义抽象运动员类
abstract class Player extends Person{
	public Player(){}
	
	public Player(String name,int age){
		super(name,age);
	}
	
	//学习
	public abstract void study();
}

//定义抽象教练类
abstract class Coach extends Person{
	public Coach(){}
	
	public Coach(String name,int age){
		super(name,age);
	}
	
	//教();
	public abstract void teah();
}

//具体乒乓球运动员类
class PingPangPlayer extends Player implements SpeakEnglish{
	public PingPangPlayer(){}
	
	public PingPangPlayer(String name,int age){
		super(name,age);
	}
	
	//吃
	public void eat(){
		System.out.println("乒乓球运动员吃小米粥");
	}
	
	//学习
	public void study(){
		System.out.println("乒乓球运动员学习接球和发球");
	}
	
	//学习英语();
	public void speak(){
		System.out.println("学习英语");
	}
}

//具体篮球运动员类
class BasketballPlayer extends Player{
	public BasketballPlayer(){}
	
	public BasketballPlayer(String name,int age){
		super(name,age);
	}
	
	//吃
	public void eat(){
		System.out.println("篮球运动员吃蓝瓜粥,");
	}
	
	//学习
	public void study(){
		System.out.println("篮球运动员学习投球");
	}
}

//具体乒乓球教练类
class PingPangCoach extends Coach implements SpeakEnglish{
	public PingPangCoach(){}
	
	public PingPangCoach(String name,int age){
		super(name,age);
	}
	
	//吃
	public void eat(){
		System.out.println("乒乓球教练吃小米粥,吃馒头");
	}
	
	//教
	public void teah(){
		System.out.println("乒乓球教练教学员接球和发球");
	}
	
	//学习英语();
	public void speak(){
		System.out.println("学习英语");
	}
}

//具体篮球教练类
class BasketballCoach extends Coach{
	public BasketballCoach(){}
	
	public BasketballCoach(String name,int age){
		super(name,age);
	}
	
	//吃
	public void eat(){
		System.out.println("篮球教练吃蓝瓜粥,吃蓝瓜馒头");
	}
	
	//教
	public void teah(){
		System.out.println("篮球教练教学员投球");
	}
}

//测试类
class InterfaceDemo{
	public static void main(String[] args){
		//测试运动员(乒乓球运动员和篮球运动员)
		//测试乒乓球运动员
		//方式1
		System.out.println("--------------乒乓球运动员具体传参----------------");
		PingPangPlayer ppp = new PingPangPlayer();
		ppp.setName("王浩");
		ppp.setAge(33);
		System.out.println(ppp.getName()+"---"+ppp.getAge());
		ppp.eat();
		ppp.sleep();
		ppp.study();
		ppp.speak();
		//方式2
		System.out.println("--------------乒乓球运动员构造传参----------------");
		PingPangPlayer ppp2 = new PingPangPlayer("王浩",33);
		System.out.println(ppp2.getName()+"---"+ppp2.getAge());
		ppp2.eat();
		ppp2.sleep();
		ppp2.study();
		ppp2.speak();
		
		//测试篮球运动员
		//方式1
		System.out.println("--------------篮球运动员具体传参----------------");
		BasketballPlayer bp = new BasketballPlayer();
		bp.setName("姚明");
		bp.setAge(39);
		System.out.println(bp.getName()+"---"+bp.getAge());
		bp.eat();
		bp.sleep();
		bp.study();
		
		//方式2
		System.out.println("--------------篮球运动员构造传参----------------");
		BasketballPlayer bp2 = new BasketballPlayer("姚明",39);
		System.out.println(bp2.getName()+"---"+bp2.getAge());
		bp2.eat();
		bp2.sleep();
		bp2.study();
		System.out.println("-------------------------------");
		
		//测试教练(乒乓球教练和篮球教练)
		//测试乒乓球教练
		//方式1
		System.out.println("--------------乒乓球教练具体传参----------------");
		PingPangCoach ppc = new PingPangCoach();
		ppc.setName("王浩明");
		ppc.setAge(43);
		System.out.println(ppc.getName()+"---"+ppc.getAge());
		ppc.eat();
		ppc.sleep();
		ppc.teah();
		ppc.speak();
		
		//方式2
		System.out.println("--------------乒乓球教练构造传参----------------");
		PingPangCoach ppc2 = new PingPangCoach("王浩明",43);
		System.out.println(ppc2.getName()+"---"+ppc2.getAge());
		ppc2.eat();
		ppc2.sleep();
		ppc2.teah();
		ppc2.speak();
		
		测试篮球教练
		//方式1
		System.out.println("--------------篮球教练具体传参----------------");
		BasketballCoach bc = new BasketballCoach();
		bc.setName("王浩明");
		bc.setAge(43);
		System.out.println(bc.getName()+"---"+bc.getAge());
		bc.eat();
		bc.sleep();
		bc.teah();
		
		//方式2
		System.out.println("--------------篮球教练构造传参----------------");
		BasketballCoach bc2 = new BasketballCoach("王浩明",43);
		System.out.println(bc2.getName()+"---"+bc2.getAge());
		bc2.eat();
		bc2.sleep();
		bc2.teah();
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值