父类 obj = new 子类();我现在知道,这属于多态,编译的时候obj是父类,执行的时候obj是子类。但是,我只是记住了概念而已,我怎么体会不到,实际的意思是什么呢?
解决方案 »
- 帮忙看个小递归
- cobocode 编译的问题!!!
- for循环判断数组问题..谢谢
- ArrayList类中的clone()方法怎么用啊 ??迷惑ing,希望指教!!
- java中db2数据库sql语句的处理方法 求解!
- 请教输出问题,谢谢!
- 求助求助,java线程的生产者和消费者关系 需要先生产,后消费。
- 请问int和Integer有什么区别
- 使用 iplanet directoty Server 必须要安装 TCP/IP 吗?
- 请问,在jdk1-2-2中,import所需的东西在什么地方,我怎么找不到阿
- 请问eclipse中为什么在cmd中运行要快啊
- 请问如何用JAVA获得PING值,并记录下来啊? 谢谢!!! 急!
Shape为一个类,而其子类可能有Arc, Circle, Rectangle, Triangle,它们的draw方法实现不一。而一个Shape对象数组shapes中有各个类的实例,当你调用shapes[i].draw时有可能是画方框,有可能是画圆。这就是多态性。另外一个可能的多态性是指,方法名相同但参数不一样,如 draw( String )是画一个字符串,但draw( Date )是指画一个日期了。
很笼统的说,多态应该相对C一类的非OO的语言讲有很大的优点。例如,一个学校要存储学生的资料,但是由专科,本科,硕士,博士组成的学生总体的资料的存放就会有区别。比方说,用C的数组存放,那么不同学位的学生就只能存放在不同的数组里面,而且操作只能分别实现。但是OO里面使用多态,完全给你一个统一的数组叫StudentArray,那么只要是学生类型,你都可以存放,因为他们共性被提取,而个性的实现不同,这就方便了管理。
其实,我开始也觉得,函数的实现没有少花一点功夫,但是不要忘记,用户不晓得我们的东西,你给他说:“如果学生给你档案,那你就扔到橱子里面吧!”但是如果你给他说,1 2楼是学士的,3楼硕士,4楼博士,学士的用牛皮纸袋子,硕士用塑料袋子,博士的不要封装,那么他会感到很复杂,或者知道你的操作机制,从中破坏……总之,这是一个笼统的问题,得笼统解释。具体好处,你要慢慢感受!
http://community.csdn.net/Expert/TopicView3.asp?id=4816106乱码还原问题!
http://community.csdn.net/Expert/TopicView3.asp?id=4813786关于javabean反射代理的问题
http://community.csdn.net/Expert/TopicView3.asp?id=4813935
如果,父类中有aa()的方法,而子类中没有,那么编译通过,根本没有实际意义!
如果,父类中有aa()的方法,而子类中没有,那么编译通过,根本没有实际意义!
=====怎么说?
--------------------------------
父类 obj = new 子类();
如果,父类中有aa()的方法,而子类中没有,那么编译通过,根本没有实际意义!因为运行的时候,obj是子类的对象,而子类中没有aa()方法,运行肯定出错了。如果,子类中有aa()方法的话,实现了对父类的重载也好,覆盖也好。那么直接就写 子类 obj = new 子类(); 多好为什么写 父类 obj = new 子类();??
只会调用父类有的方法,如果子类有定义,则覆盖父类的方法。
父类没有的方法是没法实现的。
也就是说
父类 obj = new 子类();把子类当中有而父类没有的方法过滤掉了
to 楼上,aa方法可以继承的,只要不是private
如:有父类A,子类A1,A2,A3,A4都重写了execute()方法;
A a = null;
switch(flag)
{
case 1:
a=new A1();
break;
case 2:
a=new A2();
break;
case 3:
a=new A3();
break;
case 4:
a=new A4();
break;
}
if(a!=null)
{
a.execute();
}
再演变为一堆设计模式...