面对对象之多态---多态接口

多态接口

  1. 调用子类中的方法1
package com.duotai2;x

/**
 * 			怎么调用子类中的方法??
//			animal.lookDoor();
//			animal.playGame();	
 *
 */
public class 多态案列2 {
	public static void main(String[] args) {

	    Animal animal1= new Dog();
	    animal1.name = "二哈";
	    
	    Animal animal2= new Cat();
	    animal2.name = "二淼";
	    
		Master master = new Master();
		master.feed(animal2);
		master.feed(animal1);
		
	}

}
abstract class Animal {
	String name;
	public abstract void eat() ;
		
}
class Dog extends Animal{
	//方法重写标志
	@Override
	public void eat() {
		System.out.println("Dog吃骨头");
	}
	public void lookDoor() {
		System.out.println(name + "看门");
	}
}
class Cat extends Animal{

	@Override
	public void eat() {
		System.out.println("猫吃鱼");
		
	}
	public void playGame() {
		System.out.println(name + "玩游戏");
	}
}
//	主人喂食(多态的真正运用)
class Master{
	public void feed(Animal animal){
			System.out.println("准备喂" + animal.name+"吃");
			animal.eat();
			System.out.println( animal.name + "吃完了");
			
//			instanceOf关键字
			if(animal instanceof Dog){
				Dog dog = (Dog)animal;
				dog.lookDoor();
			} else if (animal instanceof Cat ){
				Cat cat = (Cat)animal;
				cat.playGame();
			}
}
}

  1. 调用子类中的方法2
 public class DuTai {
	public static void main(String[] args) {

	    Animal animal1= new Dog(10 , "二哈");
	    Animal animal2= new Cat(20 , "二喵");
	    
		Master master = new Master();
		master.feed(animal1);
		master.feed(animal2);
	}

}
interface Animal {
 void eat() ;
}
class Dog implements Animal{
	String name;
	int age;
	
	public Dog(int age, String  name) {
		this.name = name;
		this.age =age;
	}
	@Override
	public void eat() {
		System.out.println("Dog吃骨头");
	}
	public void lookDoor() {
		System.out.println(name + "看门");
	}
}
class Cat implements Animal{
	String name;
	public int age;
	
	public Cat(int age, String  name) {
		this.name = name;
		this.age =age;
	}
	@Override
	public void eat() {
		System.out.println("猫吃鱼");
		
	}
	public void playGame() {
		System.out.println(name + "玩游戏");
	}
}


//	主人喂食
class Master{
	public void feed(Animal animal){
		Dog dog = null;
		Cat cat = null;
		
		String name = null;
		
//		instanceOf关键字
		if(animal instanceof Dog){
			 dog = (Dog)animal;
			name = dog.name;
		} 
		else if (animal instanceof Cat ){
			 cat = (Cat)animal;
			name = cat.name;
		}
		
		System.out.println("准备喂" + name +"吃");
		animal.eat();
		System.out.println( name + "吃完了");
		
		if( dog != null){
			 dog.lookDoor();
		} 
		else if (animal instanceof Cat ){
			cat.playGame();
		}
}
}
	
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值