Java基础技巧:中父类怎么调用子类?

父类能调用子类的方法吗?

答:能。

怎么做?

● 把子类传递到父类的有参构造中,然后调用。
● 使用反射的方式调用,你使用了反射还有谁不能调用的?!
● 父类调用子类的静态方法。

案例展示:

 
  1. package com.ywq;

  2.  
  3.  
  4.  
  5. public class Test2{

  6. public static void main(String[] args)

  7. {

  8. Son son = new Son();

  9. Father father=new Father(son);

    扫描二维码关注公众号,回复: 6112808 查看本文章
  10. father.fun1();

  11. father.fun4();

  12. }

  13. }

  14. class Father{

  15. public Son son;

  16. public Father(Son son){

  17. this.son=son;

  18. }

  19. public Father() {

  20.  
  21. }

  22.  
  23. public void fun4(){

  24. //方法3:使用反射的方式调用子类方法

  25. try {

  26. Class cls=Class.forName("com.ywq.Son");

  27. Son son=(Son) cls.newInstance();

  28. son.fun2();

  29. } catch (Exception e) {

  30.  
  31. e.printStackTrace();

  32. }

  33. }

  34. public void fun1(){

  35. //方法1:把子类传递到父类的有参构造函数中,然后调用。

  36. System.out.println("我是父类的方法");

  37. son.fun2();

  38.  
  39. //方法2:父类调用子类的静态方法。

  40. Son.fun3();

  41. }

  42. }

  43.  
  44. class Son extends Father{

  45.  
  46. public static void fun3(){

  47. System.out.println("我是子类的静态方法");

  48. }

  49. public void fun2(){

  50. System.out.println("我是子类的方法");

  51.  
  52. }

  53.  
  54. }

这三种都是父类直接调用子类的方法,

      好用不?好用!

      解决问题了吗?解决了!

      项目中允许使用不?不允许!

Ja va基础资料教程免费送  加编程学习“君羊”获取  8819 82657  

我就一直没有搞懂为什么要用父类调用子类的方法。如果一定要调用子类,那为什么要继承它呢?搞不懂。其实这个问题可以换个角度去理解,父类建立框架,子类在重写了父类部分的方法后,再调用从父类继承的方法,产生不同的结果(而这正是模板方法模式)。这是不是也可以理解为父类调用了子类的方法呢?你修改了子类,影响了父类行为的结果,曲线救国的方式实现了父类依赖子类的场景,模板方法模式就是这种效果。

猜你喜欢

转载自blog.csdn.net/ajian6/article/details/89787446