抽象类,接口和实例之间instanceof关系问题

本文深入探讨Java中多态的运用,通过实例演示对象如何向上转型为接口、父类和抽象类引用类型,以及如何利用instanceof关键字检查对象的实际类型。通过具体的代码示例,展示了不同类和接口之间的继承和实现关系。

在Java中一个实例对象可以向上转型为这个对象的接口引用类型对象,父类引用类型对象,抽象类引用类型对象,这些都是可以的。
在多态中熟练运用这些对象从属关系可以很好的解决实际问题。

public class Test {
	public static void main(String[] args) {
		Chicken ch = new Chicken();  	//将子类对象指向实现类引用
		System.out.println(ch instanceof Animal); //true
		System.out.println(ch instanceof lay);//true
		System.out.println(ch instanceof Work);//true
		System.out.println(ch instanceof seeDoor);//false
		
		Animal dog = new Dog();			//将子类对象指向抽象类引用
		System.out.println(dog instanceof Animal); //true
		System.out.println(dog instanceof lay);//false
		System.out.println(dog instanceof Work);//true
		System.out.println(dog instanceof seeDoor);//true
		
		Work work = new Chicken();		//将子类对象指向接口1引用
		System.out.println(work instanceof Animal); //true
		System.out.println(work instanceof lay);//true
		System.out.println(work instanceof Work);//true
		System.out.println(work instanceof seeDoor);//false
		
		seeDoor ll = new Dog();			//将子类对象指向接口2引用
		System.out.println(ll instanceof Animal); //true
		System.out.println(ll instanceof lay);//false
		System.out.println(ll instanceof Work);//true
		System.out.println(ll instanceof seeDoor);//true
	}
}

abstract class Animal{ //抽象父类Animal
	public void eat() {
		System.out.println("动物吃饭");
	}
}
interface Work{ //接口1
	void doWork();
}
interface seeDoor extends Work{ //接口2继承接口1
	String seeDoor() ;
}
interface lay extends Work{//接口3继承接口1
	String layEgg();
}

class Dog extends Animal implements seeDoor{ //子类Dog
	
	@Override
	public void eat() { //重写抽象父类方法
		System.out.println("狗狗吃骨头");
	}
	@Override
	public void doWork() {//重写接口方法
		System.out.println("狗狗工作");
	}

	@Override
	public String seeDoor() {//重写接口方法
		return "看家护院";
	}
	
}
class Chicken extends Animal implements lay{

	@Override
	public void eat() { //重写抽象父类方法
		System.out.println("小鸡吃米");
	}
	@Override
	public void doWork() {//重写接口方法
		System.out.println("小鸡在工作");
			
	}

	@Override
	public String layEgg() {//重写接口方法
		return "母鸡下蛋";
	}
	
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值