java子类与父类方法调用

1.class Parent {
  private   void method1(){
   System.out.println("Parent's method1()");
  }
  public void method2(){
   System.out.println("Parent's method2()");
   method1();
  }
 }
 public class Child extends Parent{
  public void method1(){
   System.out.println("Child's method1()");
  }
  public static void main(String[] args) {
   Parent p=new Child();
   p.method2();
  }
 }

输出:Parent's method2()   

      Parent's method1()

2.class Parent {
  void method1(){
   System.out.println("Parent's method1()");
  }
  public void method2(){
   System.out.println("Parent's method2()");
   method1();
  }
 }
 public class Child extends Parent{
  public void method1(){
   System.out.println("Child's method1()");
  }
  public static void main(String[] args) {
   Parent p=new Child();
   p.method2();
  }
 }

输出:Parent's method2()
       Child's method1()

分析:1.多态new的对象,调用的方法是父类中一定存在的,否则编译不通过.如果调用的方法不是私有的,则会先去到子类中,查找该方法有没有被子类覆盖,如有,执行子类方法;如无,执行父类方法,即使子类中存在参数类型最匹配的方法也不会被执行.

2.private是私有的,其他类是不能访问的,子类也不可以访问,所以你可以重新实现父类的该方法,不会有冲突,但是你重新实现的方法,不叫重写也不叫重载,是一个该子类新增的方法,和子类的一般扩展方法一样.所以例1中父类方法method1是private的,不能被子类覆盖,所以调用的是自身的方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值