接口、抽象类

//接口,抽象类
public abstract class Pet6 implements Speakable {
	//抽象类中有属性name,及getName方法,实现了接口但接口的方法没有具体实现
	String name;
	public String getName(){
		return name;
	}
	public void speak(){}
}
interface Speakable{//接口中有抽象的方法speak
	public abstract void speak();
}
interface Flyable{//接口中有抽象的方法fly
	public abstract void fly();
}

class Cat extends Pet6 implements Speakable{//猫继承宠物类并实现Speakable接口
	String name;
	public Cat(String name){
		this.name=name;
	}
	public String getName(){
		return name;
	}
	public void speak(){//实现speak方法
		System.out.println(this.name+":喵喵,我是一只小花猫。");
	}	
}
class Pigeon extends Pet6 implements Speakable,Flyable{
	//鸽子类继承pet类并实现speakable和flyable接口
	String name;
	public Pigeon(String name){
		this.name=name;
	}
	public String getName(){
		return name;
	}
	public void speak(){
		System.out.println(this.name+"说:咕咕,我是一只鸽子。");
	}
	public void fly(){
		System.out.println(this.name+",我可以飞,将信送到远方。");
	}
}

class Parrot extends Pet6 implements Speakable,Flyable{
	//鸽子类继承pet类并实现speakable和flyable接口
	String name;
	public Parrot(String name){
		this.name=name;
	}
	public String getName(){
		return name;
	}
	public void speak(){
		System.out.println(this.name+"说:哈哈,我是一只鹦鹉,可以学说话。。");
	}
	public void fly(){
		System.out.println(this.name+",我可以飞,但是被关在笼子里出不去,呜呜。");
	}
}

class house{//家庭类,有Pet数组,存放宠物
	private Pet6 []p;
	private int len;
	public house(int n){//数组中存放宠物的数量
		p=new Pet6[n];
		len=0;
	}
	public void addPet(Pet6 pet){//添加宠物到p数组,达到最大数量后不能再添加
		if(len<p.length){
			p[len]=pet;
			++len;
			System.out.println("家里来了一位新成员,叫做:"+pet.getName());
		}
		else
			System.out.println("家里宠物数量太多了,不能再养了。");
	}
	public void speakAll(){//让宠物数组中可以说话的对象说话
		for(int i=0;i<len;i++)
			p[i].speak();
	}
	public void flyAll(){
		for(int i=0;i<len;i++){
			if(p[i] instanceof Flyable){
				Flyable f=(Flyable)p[i];
				f.fly();
			}
		}
	}
}
class testHouse{
	public static void main(String []args){
		house myhouse=new house(5);//最多可以养5个宠物
		myhouse.addPet(new Cat("cat1"));
		myhouse.addPet(new Cat("cat2"));
		myhouse.addPet(new Pigeon("pigeon1"));
		myhouse.addPet(new Pigeon("pigeon2"));
		myhouse.addPet(new Parrot("parrot1"));
		System.out.println("当家里想养第六个宠物时会提示:");
		myhouse.addPet(new Parrot("parrot2"));
		System.out.println("-------------------------");
		myhouse.speakAll();
		System.out.println("-------------------------");
		myhouse.flyAll();
	}	
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值