为了账号安全,请及时绑定邮箱和手机立即绑定

Java 多态性,继承,方法的覆写;看new 的是谁

标签:
Java
案例1:

package com.curtis;
public class Pol {
      public static void main(String[] args) {
             B b = new B();
             A a = b;// A 的实例化对象,指向B的实例
             a.tell01();// new 的是B 类,调用方法时,调用的是B 类中的tell01() 方法
             a.tell02();// B 类中没有tell02() 方法,但是B 类继承了A 类,所以该处调用的是A 类中的tell02() 方法
             // A 类中是没有tell03() 方法的,所以A 类实例在调用B 类中的方法时是无法调用tell03() 方法的
             // 输出结果:
             // B-->tell01 方法
             // A-->tell02 方法
      }
}
class A {
      public void tell01() {
             System.out.println("A-->tell01 方法");
      }
      public void tell02() {
             System.out.println("A-->tell02 方法");
      }
}
class B extends A {
      /**
       * 父类A 中也有此方法,现在B 类中这样定义,实际是对父类中tell01() 方法进行覆写
       */
      public void tell01() {
             System.out.println("B-->tell01 方法");
      }
      public void tell03() {
             System.out.println("B-->tell03 方法");
      }
}

案例2:
package com.curtis;
public class Pol {
      public static void main(String[] args) {
             A a=new B();
             B b=(B) a;// 向下转型
             b.tell01();
             b.tell02();
             b.tell03();// new 的是B 类,B 类中是有tell03() 方法的;
             // 输出结果:
             // B-->tell01 方法
             // A-->tell02 方法
             // B-->tell03 方法
      }
}
class A {
      public void tell01() {
             System.out.println("A-->tell01 方法");
      }
      public void tell02() {
             System.out.println("A-->tell02 方法");
      }
}
class B extends A {
      public void tell01() {
             System.out.println("B-->tell01 方法");
      }
      public void tell03() {
             System.out.println("B-->tell03 方法");
      }
}
点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
Python工程师
手记
粉丝
62
获赞与收藏
1091

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 1
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消