子类只能覆盖超类中“可以直接访问”的方法

子类只能覆盖超类中“可以直接访问”的方法,否则即使在子类中定义了一个与超类中形式一样的方法,也没有覆盖,只是一个同名方法而已。此时,子类中拥有两个名字相同的方法:其中一个是从超类中继承的不可访问方法,另一个就是自己定义的方法

//OverridingPrivate.java
//You can not override a private method from super class

package com.msn.spaces.bryantd001;

class SuperClass{
      private void showMessage(){
            System.out.println("This is a private method in the super class.");
      }

}

public class OverridingPrivate extends SuperClass{
      //超类中的private方法对于子类是不可见的,因此这里并没有覆盖
      public void showMessage(){
            //super.showMessage();  super代表一个超类对象,其不能调用自身的private方法
            System.out.println("This is a 'Overriding method' in the super class.");

}

    public static void main(String[] args){
          OverridingPrivate opObj=new OverridingPrivate();
          opObj.showMessage();
       
          SuperClass scObj=opObj;  //向上转型
          //这里出错的原因是子类的showMessage()方法并没有覆盖超类的同名方法
          //然而scObj仍然企图利用多态的性质(超类引用指向子类对象后,可以调用子类中的同名方法,前提是覆盖了超类的同名方法)
          //scObj.showMessage();  
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值