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()方法。
我不是故意这样问,我也知道多态是面向对象的核心,只是一下子想法没扭过来 展开
展开全部
在实际操作中,多态可以让我们不用关心某个对象到底是什么具体类型,就可以使用该对象的某些方法,而这些方法通过一个抽象类或者接口来实现,多态就是提供父类调用子类代码的一个手段而已。下面给一个例子
abstract class Person
{
private String name;
private int age;
Person(String name,int age)
{
this.name = name;
this.age = age;
}
abstract void say();
}
class Student extends Person
{
Student(String name,int age)
{
super(name,age);
}
public void say()
{
System.out.println("I'am a Student");
}
}
class Teacher extends Person
{
private String profession;
Teacher(String name,int age,String profession)
{
super(name,age);
this.profession = profession;
}
public void say()
{
System.out.println("I'am a Teacher");
}
}
class School
{
private String schoolname;
private Person person;
School(String schoolname,Person person)
{
this.schoolname = schoolname;
this.person = person;
}
public void foundPerson()
{
person.say();
}
}
public class TestPolymoph
{
public static void main(String[] args)
{
Student studnet = new Student("lisi",21);
Teacher teacher = new Teacher("dudu",29,"maths");
School school1 = new School("changning",studnet);
School school2 = new School("changning",teacher);
school1.foundPerson();//I'am a Student
school2.foundPerson();//I'am a Teacher
}
}
School方法传递了抽象类Person,具体调用时是根据具体的实际实例化的对象调用对应的方法
强调一下:多态可以让我们不用关心某个对象到底是什么具体类型,就可以使用该对象的某些方法,这就是多态的好处。
希望你能明白。呵呵。
abstract class Person
{
private String name;
private int age;
Person(String name,int age)
{
this.name = name;
this.age = age;
}
abstract void say();
}
class Student extends Person
{
Student(String name,int age)
{
super(name,age);
}
public void say()
{
System.out.println("I'am a Student");
}
}
class Teacher extends Person
{
private String profession;
Teacher(String name,int age,String profession)
{
super(name,age);
this.profession = profession;
}
public void say()
{
System.out.println("I'am a Teacher");
}
}
class School
{
private String schoolname;
private Person person;
School(String schoolname,Person person)
{
this.schoolname = schoolname;
this.person = person;
}
public void foundPerson()
{
person.say();
}
}
public class TestPolymoph
{
public static void main(String[] args)
{
Student studnet = new Student("lisi",21);
Teacher teacher = new Teacher("dudu",29,"maths");
School school1 = new School("changning",studnet);
School school2 = new School("changning",teacher);
school1.foundPerson();//I'am a Student
school2.foundPerson();//I'am a Teacher
}
}
School方法传递了抽象类Person,具体调用时是根据具体的实际实例化的对象调用对应的方法
强调一下:多态可以让我们不用关心某个对象到底是什么具体类型,就可以使用该对象的某些方法,这就是多态的好处。
希望你能明白。呵呵。
展开全部
假如的的Car中有100个方法 ,你你那样写岂不是每创建一个对象时都要调用100次,而多态给我们带来了好处,我们只需在基类中(也就是Car类)写出这100个方法,而在调用的时候只需将子类对象传递给基类对象,编译器将会根据具体类的对象调用相应对象的方法,从而简便了编程(省去了每次创建对象都要写100个调用代码),其实我刚学的时候想法也跟你一样,嘿嘿 为了我们有共同的想法,给点分我吧!!!!!!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
多态在java编程中是很常用的,在编写多态方法时 所有重载的 方法 所执行的目的是相同的,但是它们的参数有可能不同,比如说:你要求面积,但是你是如果是求圆的面积的话就要知道它的半径,只需知道一个参数,但是求矩形面积的话,就要知道长和宽这两个参数,所以说多态还是比较常用的方法。同时多态在以后系统的维护中也是很重要的~~
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
很多答案太空了,多态的关键是每个子类都要重写方法,实现了继承了同样的方法名称但是又有每个的特点,就像龙生九子,每个不一样,有两个好处,一个是类关系清晰,另一个是方法调用方便,只要有传入实参就行,很多设计好处要自行体会。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
go方法传递的父类。所以只要是继承了该类的子类都可以作为参数传递过去。在现实我们哪知道会不会有新的电脑。总不能都new出来吧!这样的话扩展性更好。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |