java多态继承中需要特别注意的点

         都知道在java中,子类继承父类后可以多态的覆盖父类方法,即使在上线转型使用的时候也是使用子类中的方法,那么在子类继承父类过程中是不是所有的方法及父类属性都能多态呢?让我们看看下面列子:

 

package test;

import static test_1.PrintDome.*;

/**
 * java多态列外的部分
 *
 * */
public class UpTransDisplay extends SuperPlay{//子类
 
 public int fileNum=1;//子类域中参数,不可多态化
 public int getFileNum(){//子类普通方法,多态属性
  return fileNum;
 }
 
 public int getSuperFileNum(){
  return super.fileNum;
 }
 
 public static int getStaticNum(){//静态方法不可多态
  return 3;
 }
 
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  SuperPlay superPlay = new UpTransDisplay();
  UpTransDisplay superPlaySon = new UpTransDisplay();
  print("superPlay.fileNum: "+superPlay.fileNum+"  superPlay.getFileNum: "+superPlay.getFileNum()+"  "
    + " superPlay.getStaticNum: "+superPlay.getStaticNum());//可以看到此处编译时已有警告,证明静态方法不可以多态
  print("superPlaySon.fileNum: "+superPlaySon.fileNum+"  superPlaySon.getFileNum: "+superPlaySon.getFileNum()+"  "
    + " superPlaySon.getStaticNum: "+superPlaySon.getStaticNum()+" superPlaySon.getSuperFileNum: "
    +superPlaySon.getSuperFileNum());
  
 }

}
class SuperPlay{
 public int fileNum=0;
 public int getFileNum(){
  return fileNum;
 }
 public static int getStaticNum(){
  return 2;
 }
}

-------运行结果--------------------

superPlay.fileNum: 0  superPlay.getFileNum: 1   superPlay.getStaticNum: 2
superPlaySon.fileNum: 1  superPlaySon.getFileNum: 1   superPlaySon.getStaticNum: 3 superPlaySon.getSuperFileNum: 0

 

 

从上面的列子可以看出,非静态的普通父类方法是可以被子类速覆盖多态的(列子中的getFileNum()方法),然而父类中的静态方法(getStaticNum())和父类中的字段属性fileNum 是无法被子类覆盖多态的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值