黑马程序员技术交流社区

标题: 使用多态时应注意哪些问题?<已解决。谢谢诸位> [打印本页]

作者: 黑马-王建雨    时间: 2012-5-11 17:59
标题: 使用多态时应注意哪些问题?<已解决。谢谢诸位>
本帖最后由 啷个里个郞 于 2012-5-12 00:30 编辑

谢谢   

作者: 黑马张立国    时间: 2012-5-11 18:23
例如:
1覆盖方法时(引致张孝祥老师的视频)
object的equals
public boolean equals(Object obj)
如果你覆盖时不是一模一样,就会出现你认为是调用自己的方法,但却调用了父的方法。(因为这叫重载)
2当父类的引用指向子类对象,如果父类没有该方法就会报错,
当子类和父类同时有一个相同属性时,这时调用就看引用类型。
当子类和父类同时有一个相同方法时,这时调用就看对象类型。
不能为了某个功能而乱认爹,一定要有关系(就像现实生活)。
接口一般是定义功能的
作者: 李啸    时间: 2012-5-11 18:47
在使用多态的时候稍微注意一下类型之间的转换 :向上转型  父类 父类对象=new 子类()
                                                                        向下转型   子类 子类对象=(子类)父类对象;
就是涉及到设计模式 比如工厂设计模式中传进去一个父类类型的对象在方法中的判断和转换

作者: 杨鹏    时间: 2012-5-11 19:10
java中多态的体现就是父类的引用指向子类对象,进而调用子类重写父类的方法。首先多太存在的前提有:(1)类与类(或接口)要有继承(或实现)关系。(2)一定要有方法的重写。(3)一定要有父类或者接口的引用指向子类的对象。其次要注意的是,通过多态的方式父类的引用只能访问子类从父类所继承过来的成员,不能访问子类所特有的成员。比如:父类有一个方法fun(),而子类除了具有重写fun()方法外,还一个方法g(),此时父类的引用就不能访问g()方法。
作者: 黑马-王建雨    时间: 2012-5-11 22:17
zlghff 发表于 2012-5-11 18:23
例如:
1覆盖方法时(引致张孝祥老师的视频)
object的equals

当子类和父类同时有一个相同属性时,这时调用就看引用类型。
当子类和父类同时有一个相同方法时,这时调用就看对象类型。

举例说明
作者: 黑马张立国    时间: 2012-5-12 12:46
啷个里个郞 发表于 2012-5-11 22:17
当子类和父类同时有一个相同属性时,这时调用就看引用类型。
当子类和父类同时有一个相同方法时,这时调 ...

当子类和父类同时有一个相同属性时,这时调用就看引用类型。
例如:
fu{
int num=0;
void run()
}
zi extends fu{
int num=2;
void run()
}
Fu x=new zi();
当调用x.num时,就是父类中的属性
当调用x.run()时,就是字类中的方法




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2