java中多态的好处到底是什么???
请不要解释什么叫多态,多态的原理我已经很清楚了。只是暂时还没完全体会到它给我带来的好处,我现在就有个小疑问,比如说下面的程序:classComputer{publicvo...
请不要解释什么叫多态,多态的原理我已经很清楚了。只是暂时还没完全体会到它给我带来的好处,我现在就有个小疑问,比如说下面的程序:
class Computer{
public void turnOn(){
}
}
class PC extends Computer{
public void turnOn(){
System.out.println("PC has turn on");
}
}
class NB extends Computer{
public void turnOn(){
System.out.println("NB has turn on");
}
}
class Test{
public void go(Computer computer){
computer.turnOn();
}
}
go(new PC());
go(new NB());
————————————————————
对于上面的程序,我这样写不也挺好吗:
PC pc = new PC();
NB nb = new NB();
pc.turnOn();
nb.turnOn();
为什么非要费那事重新写个go方法再调用它呢
强调一遍不要再解释多态的概念
对xianlaioy
虽然不知道会不会有新电脑,那万一新写了一个类A又继承了Computer,也实现了turnOn方法,如果我想调用A中的turnOn方法,不还得new一个A么,既然有了A对象的引用不还是可以直接a.turnOn()么
对he036002
其实我不是想怀疑它,只是这根筋一下子没扭过来
对odouaa ——
是不是项目大才能体现出来?
你说的程序中我这样不也行吗,直接调用student.say()让它直接告诉我,因为这样也可以不用管它是什么类型,因为我只要知道它继承了Person类就肯定实现了say()方法。这样岂不是更方便,还省得在School里面定义一个foundPerson()方法。
我不是故意这样问,我也知道多态是面向对象的核心,只是一下子想法没扭过来 展开
class Computer{
public void turnOn(){
}
}
class PC extends Computer{
public void turnOn(){
System.out.println("PC has turn on");
}
}
class NB extends Computer{
public void turnOn(){
System.out.println("NB has turn on");
}
}
class Test{
public void go(Computer computer){
computer.turnOn();
}
}
go(new PC());
go(new NB());
————————————————————
对于上面的程序,我这样写不也挺好吗:
PC pc = new PC();
NB nb = new NB();
pc.turnOn();
nb.turnOn();
为什么非要费那事重新写个go方法再调用它呢
强调一遍不要再解释多态的概念
对xianlaioy
虽然不知道会不会有新电脑,那万一新写了一个类A又继承了Computer,也实现了turnOn方法,如果我想调用A中的turnOn方法,不还得new一个A么,既然有了A对象的引用不还是可以直接a.turnOn()么
对he036002
其实我不是想怀疑它,只是这根筋一下子没扭过来
对odouaa ——
是不是项目大才能体现出来?
你说的程序中我这样不也行吗,直接调用student.say()让它直接告诉我,因为这样也可以不用管它是什么类型,因为我只要知道它继承了Person类就肯定实现了say()方法。这样岂不是更方便,还省得在School里面定义一个foundPerson()方法。
我不是故意这样问,我也知道多态是面向对象的核心,只是一下子想法没扭过来 展开
9个回答
展开全部
你现在写的东西少,当然不会明白。就是纯思想而言,都应好好学习。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
多态在纯Java中作用不太明显。到后期做网络时。好多地方需要多态。比方说那个PC类你到了后面就不想申明成Public了。要申明为Private。在使用时用Computer,在配置文件中却配成PC。
刚学时有怀疑精神是不对的。而且还是质疑强大的多态性
刚学时有怀疑精神是不对的。而且还是质疑强大的多态性
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
多态的最大好处在方法的传值上。假设一个方法有一个形参,如果它仅仅是一个未被继承的类,即没有子类,那么它的形态是有限的。而多态,对于形参而言,就是可以有多种类型的输入。如eat(Animal animal)这个方法中的形参,假设Animal有N个实现类,那么通过多态就可以传入N种类型的对象。从而体现出多种动物不同的吃东西的状态,一个Animal只是一个抽象的词,却可以有很多个具体的实现类作为输入(如cat、dog、pig……)。这样做的好处是显然的,这里就不赘述了,有兴趣可以了解一下面向接口编程的好处。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
School school1 = new School("changning", new Student("lisi", 21));
School school2 = new School("changning", new Teacher("dudu", 29, "maths"));
对于前辈odouaa 的解释,
如果用匿名内部类来实现的话 可能解释的更清晰一些。
用户无需知道某个对象的具体的类型,只需要用其抽象类或者接口去引用即可。
例如Collection中 迭代器就是一个很好的 多态的例子。
School school2 = new School("changning", new Teacher("dudu", 29, "maths"));
对于前辈odouaa 的解释,
如果用匿名内部类来实现的话 可能解释的更清晰一些。
用户无需知道某个对象的具体的类型,只需要用其抽象类或者接口去引用即可。
例如Collection中 迭代器就是一个很好的 多态的例子。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询