//接口,抽象类
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();
}
}
接口、抽象类
最新推荐文章于 2021-02-27 10:08:23 发布