在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 "母鸡下蛋";
}
}
本文深入探讨Java中多态的运用,通过实例演示对象如何向上转型为接口、父类和抽象类引用类型,以及如何利用instanceof关键字检查对象的实际类型。通过具体的代码示例,展示了不同类和接口之间的继承和实现关系。
1万+

被折叠的 条评论
为什么被折叠?



