飘~涅咯~switch的缺点是虾米涅 虾米叫多态呢,为虾米能有效替代switch涅(((m(-_-)m 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 翻译一下:标题:switch 有什么缺点?正文:什么叫多态?为什么说多态能取代 switch? 多态就是一个对象 多种形态 方便灵活使用父子类对象,方法~switch是指的switch case语句么?爽歪歪星球语我只是一知半解 多态的定义和特性可以在百度搜到在多态出现之前,需要使用一个额外的变量来决定调用哪个程序,这时候需要用到switch语句对额外的变量进行判断。例子就不举了,写起来太恶心了…… switch缺点就是容易发生case穿透问题!对于复杂的流程分支不易用switch 额·······为虾米这么多人晕掉勒咯,sorry,偶不是有意哒不好意思^_^拜一个~火龙GG的徽章们好pp~thx帮偶翻译:)还有,还有,感谢大家的回答.......(((((m(- -)m 通常情况下我们可以把多态理解成一个对象多个状态,即重写和重载。还有一个表现就是创建一个标准,即用接口来实现。多态是为了增加程序的可维护性,可扩展性,还有提高代码的重用性。来设计的。而你说的switch是程序的语法。 这样的人才 搞java 有点可惜哦 不过 是楼主搞java还是被java搞就拭目以待了 嘿嘿 应该想问为什么不用这种方式实现多态吧:Type type = object.getRunTimeType();switch(type){ case Root: ((Root)object).method(); case OffSpring1: ((OffSpring1)object).method(); case OffSpring2: ((OffSpring2)object).method(); ...} 标题:switch 有什么缺点? 正文:什么叫多态?为什么说多态能取代 switch? 标题:switch 有什么缺点? 正文:什么叫多态?为什么说多态能取代 switch? 什么叫多态?为什么说多态能取代 switch? 谁告诉你的?!该打 我家的老师没教我 switch替代多态 楼主也知道 switch 多了很麻烦的,而且对扩展很不方便,但是为什么说多态能有效地替换 switch 呢?这个问题我感觉很难说清楚。如果一个应用做好了之后,理想化的情况下是永远不会改动了,那么,所有的设计方法、重构方法、各种设计模式能将成为文物,没有丝毫用处了。但是现实并非如此,我们做好的东西可能会一动再动。如果没有好的设计的话,将会导致这些代码很难进行维护,可能改一个小小的东西,会导致一堆的代码进行更改,这也许就不是我们所希望的。按照面向对象设计原则中的“开-闭原则”,某一个应用在完成之后除非是修正原有代码中的错误,在其他情况下(比如说增加一个新的功能),只允许添加新的代码,但是原来已经完成的代码一行都不能进行改动。这就是所谓的“开-闭原则”,即对功能的增加是开放的,对既有代码的修改是封闭的。在这种原则下,如果采用 switch 的话,增加一个 case 项势必要去更改原有的代码,如果采用多态的话,我们只需要在配置文件中多加上一条新增的子类名称,系统就会自动地进行识别,我们原来写好的代码可以不要去动。上面说的一些只是理想上的东西,现实中是很难有理想上的东西,而且这种实现需要有很多的面向对象技巧和代码经验,有一本书对如何编写可扩展、易维护的代码有相当深入的介绍,这本书与 GoF 的设计模式是齐名的。这本书的开头一章就一个小型的重构案例,如何能理解看懂的话,对每个人都是有帮助的。这个案例中也有如何去掉 switch 采用多态进行重构的要点。 switch的用途有限,只能涉及常量(包括ENUM)如果非要与多态扯上关系的话就是火龙大哥说的那样了~继续学习~ 回答经 7 楼翻译后的楼主的虾米问题:利用工厂方法(or 抽象工厂)模式可以消除 switch case 的判断。<引用>有了翅膀才能飞,欠缺灵活的代码就象冻坏了翅膀的鸟儿。不能飞翔,就少了几许灵动的气韵。我们需要给代码带去温暖的阳光,让僵冷的翅膀重新飞起来。……http://www.cnblogs.com/wayfarer/articles/70453.html</引用> 崇拜ing```````热泪盈眶ing``````````偶要好好好好学`````````many thx火果果大大````````````^0^ 看你说话就是网上学来的口气啊 那应该算是个网虫了,网虫不会玩论坛设置?LZ够奇怪的哟...呵呵 我随便说说哒~LZ不要介意吼。 csdn也惊现非主流无孔不入啊 楼主真搞笑啊!我就简单的给你模拟一下什么是多态吧!假设你现在有一个实体类接口是Animal,那么你可能会去实现这个类叫Dog.java.这个类里,你实现了所有animal的所有方法.这样,你在使用的时候,就是这样了:Animail aim = new Dog();这个时候,你的需求有变动,你要有一个猫猫,那么你怎么办?好办啊!你就写一个implement animal的Cat类,然后,你使用的时候,就变成了:Animail aim = new Cat();这就是多态的最简单的实现过程了.是不是感觉开发简单了许多?至少你保证了一些类是不用变化的.最后,请记住几句话:多态分为两种: 编译时多态和运行时多态。 编译时类型:主观概念,把它看作什么。 运行时类型:客观概念,实际它是什么。 例:Animal a=new Dog(); 指着狗问,这个动物是什么? wow..开个讲座吧,让偶好好学学···kindly mentorbty, thx vm^^ 一个小问题求解 如何使用static System.out.println(set) 我实在找不出哪里设置错了。javac 不是内部或外部命令,也不是可运行的程序或批处理文件 数据库怎样移植数据到别的机器上去?MySQL和Oracle... (高分相送)有没有java2中文版类库下载?小弟只有英文版的。 如何得到ASCII码值? java的高手们,一个很简单的问题需要你们来解答!!! 初学java,兄弟们,帮我看一段代码? 关于try-catch影响性能 怪异现象。。。 【求助】同一个程序在cmd中是死循环,在netbeans中正常~
多态就是一个对象 多种形态 方便灵活使用父子类对象,方法~
switch是指的switch case语句么?
爽歪歪星球语我只是一知半解
例子就不举了,写起来太恶心了……
对于复杂的流程分支不易用switch
多态是为了增加程序的可维护性,可扩展性,还有提高代码的重用性。来设计的。
而你说的switch是程序的语法。
switch(type)
{
case Root:
((Root)object).method();
case OffSpring1:
((OffSpring1)object).method();
case OffSpring2:
((OffSpring2)object).method();
...
}
标题:switch 有什么缺点? 正文:什么叫多态?为什么说多态能取代 switch?
这个问题我感觉很难说清楚。如果一个应用做好了之后,理想化的情况下是永远不会改动了,那么,所有的设计方法、重构方法、各种
设计模式能将成为文物,没有丝毫用处了。但是现实并非如此,我们做好的东西可能会一动再动。如果没
有好的设计的话,将会导致这些代码很难进行维护,可能改一个小小的东西,会导致一堆的代码进行更改,
这也许就不是我们所希望的。按照面向对象设计原则中的“开-闭原则”,某一个应用在完成之后除非是修正原有代码中的错误,在其他
情况下(比如说增加一个新的功能),只允许添加新的代码,但是原来已经完成的代码一行都不能进行改动。
这就是所谓的“开-闭原则”,即对功能的增加是开放的,对既有代码的修改是封闭的。在这种原则下,如果采用 switch 的话,增加一个 case 项势必要去更改原有的代码,如果采用多态的话,
我们只需要在配置文件中多加上一条新增的子类名称,系统就会自动地进行识别,我们原来写好的代码可以
不要去动。上面说的一些只是理想上的东西,现实中是很难有理想上的东西,而且这种实现需要有很多的面向对象技巧
和代码经验,有一本书对如何编写可扩展、易维护的代码有相当深入的介绍,这本书与 GoF 的设计模式是
齐名的。这本书的开头一章就一个小型的重构案例,如何能理解看懂的话,对每个人都是有帮助的。这个案例中也有
如何去掉 switch 采用多态进行重构的要点。
就是火龙大哥说的那样了~继续学习~
利用工厂方法(or 抽象工厂)模式可以消除 switch case 的判断。
<引用>
有了翅膀才能飞,欠缺灵活的代码就象冻坏了翅膀的鸟儿。不能飞翔,就少了几许灵动的气韵。我们需要给代码带去温暖的阳光,让僵冷的翅膀重新飞起来。……
http://www.cnblogs.com/wayfarer/articles/70453.html
</引用>
崇拜ing```````热泪盈眶ing``````````偶要好好好好学`````````many thx火果果大大````````````^0^
呵呵 我随便说说哒~LZ不要介意吼。
无孔不入啊
我就简单的给你模拟一下什么是多态吧!
假设你现在有一个实体类接口是Animal,那么你可能会去实现这个类叫Dog.java.这个类里,你实现了所有animal的所有方法.
这样,你在使用的时候,就是这样了:
Animail aim = new Dog();这个时候,你的需求有变动,你要有一个猫猫,那么你怎么办?好办啊!你就写一个implement animal的Cat类,然后,你使用的时候,就变成了:
Animail aim = new Cat();
这就是多态的最简单的实现过程了.是不是感觉开发简单了许多?至少你保证了一些类是不用变化的.最后,请记住几句话:多态分为两种: 编译时多态和运行时多态。
编译时类型:主观概念,把它看作什么。
运行时类型:客观概念,实际它是什么。
例:Animal a=new Dog();
指着狗问,这个动物是什么?
wow..开个讲座吧,让偶好好学学···kindly mentorbty, thx vm^^