java的继承中多态问题

客官°小女子只卖身不卖艺 2022-10-02 10:46 269阅读 0赞

java的继承中多态问题

  • this关键字
  • 多态
    • 用子类初始父类的注意
  • 源代码
    • 输出结果
    • 总结

this关键字

  • this 是自身的一个对象,代表对象本身,可以理解为:指向对象本身的一个指针。
  • this 的用法在 Java 中大体可以分为3种:
    (1)this调用本类中的属性,也就是类中的成员变量;
    (2)this调用本类中的其他方法;
    (3)this调用本类中的其他构造方法,调用时要放在构造方法的首行。

多态

  1. 多态通常体现在具有继承关系和实现关系的类之间,一个父类具有多个子类,可
  2. 以将子类对象直接赋值给一个父类引用变量,无需任何类型转换
  3. 子类重写父类的方法也是Java多态性的一种体现。当子类继承父类时,如果父
  4. 类的方法无法满足子类的需求,子类可以对父类中的方法进行改造,这种情况称
  5. 为“方法的重写”(override

用子类初始父类的注意

  • 只能调用父类中定义的方法和变量
  • 如果子类中重写了父类中的某个方法,那么在调用该方法的时候,将会调用子类中的这个方法
  • 变量不能被重写(覆盖)

参考下面的源代码与输出结果

源代码

  1. public class ovrride {
  2. public static void main(String []agrs) {
  3. base b = new son();
  4. System.out.println(b.num);
  5. System.out.println(b.fun1());
  6. b.show();
  7. System.out.println(((son)b).fun2());
  8. }
  9. }
  10. class base{
  11. public String num="父类成员变量";
  12. public String fun1() {
  13. System.out.println(this.num);
  14. return "父类调用";
  15. }
  16. public void show() {
  17. System.out.println(this.num);
  18. System.out.println(this.fun1());
  19. }
  20. }
  21. class son extends base{
  22. public String num="子类成员变量";
  23. public String fun1() {
  24. System.out.println(this.num);
  25. return "子类调用";
  26. }
  27. public String fun2() {
  28. return "子类特有方法";
  29. }
  30. }

输出结果

  1. 父类成员变量
  2. 子类成员变量
  3. 子类调用
  4. 父类成员变量
  5. 子类成员变量
  6. 子类调用
  7. 子类特有方法

总结

  • 对于方法的覆盖 , new谁就调用谁。
  • 对于变量的覆盖,this在哪个类就调用哪个类。

发表评论

表情:
评论列表 (有 0 条评论,269人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Java封装、继承理解

    一、封装是把过程和数据包围起来,对数据的访问只能通过已定义的接口。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访