问题描述
- java中关于多态使用的困惑?
- A是父类,B是子类。
A a = new B();
这是多态中的父类引用指向子类对象,可以调用子类中重写了父类的方法。但我有一点不明白,既然调用重写了父类方法的子类,那么我直接创建一个子类的对象,
也可以达到相同的效果,那我为什么还要使用这样的向上转型呢?哪里又需要用到呢?谢谢大家解惑。
解决方案
你说得是这样的,但是大多数情况下,我们写代码时,关联的都是上层抽象类型,即我们只关心拥有某个对象的上层类型,而不关心它具体是哪种类型,那么不管外界给我们哪种它的底层子类,都不影响我这个类的功能。这就是依赖抽象的好处,其实这是设计模式的思想,主要作用就是让我能更容易复用和维护代码,等你写代码久了,接触的多了,就会逐渐体会这样依赖上层的优势了。
解决方案二:
比如说插件程序,主程序先开发出来,主程序定义了接口或者抽象基类。插件开发者通过派生它实现具体的功能。主程序反射加载插件,转换为基类类型,然后调用。
请特别注意,主程序开发者不可能提前预知插件的类型,所以不可能直接使用这个类型。
解决方案三:
java多态困惑
在JAVA中使用多态时切记
Java 多态(Polymoph)
解决方案四:
Java语言三大特性之一,多态这一块我自己知道的也很少,请各位大侠指教,使用多态可以在运行时实现类的动态加载,且在方法的调用时只能调用重写的方法,对于不同类各自定义的方法无法调用,感觉有一种普遍与特殊的关系在里面,不知道对不对,还请各位赐教,不胜感激。
解决方案五:
有一个animal,然后有一个cat,有一个dog,都继承自animal。
如果a1 = new cat() a1 = new dog()
然后比较动物的年龄
这样比较器的参数就可以设置为animal类型
解决方案六:
多态主要不是用在这里的,应该是借口和抽象类吧
时间: 2024-12-11 00:53:46