package com.chn.polymorphism; public class Demo3 { public static void main(String[] args) { Animal1 a1=new Dog1(); a1.eat(); //多态的弊端 //不能调用子类特有功能 //解决办法 //将父类强制类型转化成子类 Dog1 d=(Dog1) a1; d.LookHouse(); Animal1 a2=new Cat1(); a2.eat(); Cat1 c=(Cat1) a2; c.CatchMouse(); //可以用instanceof关键词来进行判断 //判断a1是不是Dod1类型,不是直接为false // if(a1 instanceof Dog1){ // Dog1 d=(Dog1) a1; // } else if (a2 instanceof Cat1) { // Cat1 c=(Cat1) a2; // }else{ // System.out.println("没有此对应类型,无法转换"); // } } } class Animal1{ public void eat(){ System.out.println("动物在吃饭"); } } class Dog1 extends Animal1{ @Override public void eat(){ System.out.println("狗在啃骨头"); } public void LookHouse(){ System.out.println("狗在看家"); } } class Cat1 extends Animal1{ @Override public void eat(){ System.out.println("猫在吃猫粮"); } public void CatchMouse(){ System.out.println("猫在抓老鼠"); } }
有关多态的弊端及其解决方法
本文通过Java代码展示了多态的概念,包括Animal1基类和Dog1、Cat1子类的实例化,以及如何利用多态调用子类特有的方法。同时提到了多态的局限性以及解决方法——强制类型转换。
摘要由CSDN通过智能技术生成