继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

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

Curtis_yang
关注TA
已关注
手记 63
粉丝 62
获赞 1091
案例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 方法");
      }
}
打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP

热门评论

继承

被继承的类功能不够强大,新类在继承某一个类后整一堆自己的方法;表现形式来看是:新类既有被继承类的方法,又有自己的一堆东西,看上去比被继承类强大了;

覆写

覆写跟重载一定要分开,分不开先记住前提:覆写一定是在有继承关系的类中才会冒出来的;新类继承了某一个类,新类中的方法定义跟被继承类一模一样,就说明新类中的方法把被继承类中的方法盖死了;

重载局限在方法上面:什么:方法名称相同,方法的参数列表不相同;说明:返回值没有要求,返回值没有要求,返回值没有要求;

查看全部评论