黑马程序员技术交流社区

标题: 父类引用指向子类对象 [打印本页]

作者: 冷叙辰    时间: 2013-3-14 11:42
标题: 父类引用指向子类对象
本帖最后由 冷叙辰 于 2013-3-14 18:53 编辑

在什么时候使用父类引用指向子类对象,并且它的好处是什么?
作者: 郑晓飞    时间: 2013-3-14 12:19
当子类出现和父类一模一样的函数时,子类对象在调用该函数时,会运行子类函数的内容。如同父类函数被覆盖了一样。

此时父类函数还在内存中,只是没有运行。

子类继承父类,会沿袭父类的功能。如果子类功能内容与父类不相同时,此时不必定义新功能,而是使用覆盖,保留父类功能定义,并重写功能内容
覆盖特点:
使用覆盖功能必须保证子类权限大于等于父类权限,否则编译不通过。
静态只能覆盖静态。
这样做的好处是:提高了代码的复用性。
初学者只能现学现卖到这里了。
作者: 李思杰    时间: 2013-3-14 13:19
  1. class Person
  2. {
  3. String name;//name和age是student和worker共有的属性,所以可以把name和age提取出来,定义一个person类,也就是父类
  4. int age;
  5. }
  6. class Student extends/*继承*/ Person
  7. {
  8. // String name;因为student继承的person,所以注释的2行代码可以省略不写,这样提高了代码的复用性
  9. // int age;
  10. void study()
  11. {
  12. System.out.println(name+"...student study.."+age);
  13. }
  14. }
  15. class Worker extends Person
  16. {
  17. // String name;worker继承了person,所以这2行代码也可以不写
  18. // int age;
  19. void work()
  20. {
  21. System.out.println("worker work");
  22. }
  23. }
  24. class ExtendsDemo
  25. {
  26. public static void main(String[] args)
  27. {
  28. Student s = new Student();
  29. s.name= "zhangsan";
  30. s.age = 22;
  31. s.study();
  32. }
  33. }
复制代码
当子类有共同的属性时,可以提取出来,构造一个父类,把共同属性加入父类,再由子类继承父类。
好处就是提高代码复用性。

作者: 黑马-李嘉欣    时间: 2013-3-14 13:42
多态:可以理解为事物存在的多种体现形态。在对象上的体现。
1.多态的体现:父类的引用指向了自己的子类对象。
                        父类的引用也可接受子类的对象。如 Animal c=new Cat()
2.多态的前提:
        必须是类与类之间有关系,要么继承,要么实现。
        通常还有一个前提:存在覆盖。
3.多态的好处:
        多态大大提高了程序的扩展性。
4.多使态的弊端:
        调高了扩展性,但是只能使用父类的引用访问父类中的成员。不能访问子类特有的成员,
还有什么不明白的给我私信,希望对你有帮助~
作者: 猫腻    时间: 2013-3-14 13:53
楼主如果没问题,请结贴,有问题请继续追问。
作者: 马甲大王    时间: 2013-3-14 14:00
好比有一个Animal类有一个抽象方法eat()
一些Animal的子类,Cat,Dog类,都复写的各自的eat()方法。
Animal  animal = newCat();
animal.eat();

如果你以后想改成Dog类的eat()时,只需把newCat()改为newDog()
作者: tianyun    时间: 2013-3-14 17:00
父类对象应用指向子类对象,是java面向对象多态性的体现。当父类对象的方法被子类重写后,父类的应用只能调用被子类重写的方法,并且该应用不能直接访问子类中存在而父类中不存在的方法,学转换成子类对象再访问。
作者: 王龙涛    时间: 2013-3-14 17:36
多态的体现就是通过,父类指向自己的子类对象。
父类的引用也可以接收自己的子类对象。
好处:
多态的出现大大提高了程序的扩展性。




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