Java多态性的两个特殊情况

我要分析的两种情况与static和final两个修饰符有关~


1)static

static修饰的方法不能被重写,而final修饰的方法也不能被重写。


2)final

由于private和public的可见性不同,private仅仅是某个特定的类可见,而子类不可见,所以允许子类和父类都可以有用private final修饰的相同方法,如下例中的public final void test2(){};

而public子类可见,如果子类和父类都有public final,那么在子类中就有两个相同的public final方法,这显然是不可以的,因而,不允许子类和父类都可以有用public final修饰的相同方法(protected以及无访问修饰符的也一样)。


示例:(注释为原因和结果)

[java] view plaincopyprint?
  1. package com.xujin;
  2. class Base{
  3. private final void test(){
  4. System.out.println("Base,test");
  5. }
  6. public final void test2(){
  7. System.out.println("Base,test2");
  8. }
  9. public static void test3(){
  10. System.out.println("Base,test3");
  11. }
  12. }
  13. public class Test extends Base
  14. {
  15. //允许子类和父类都有private final存在,但是不允许都有public final存在
  16. private final void test(){
  17. System.out.println("Test,test");
  18. }
  19. //public final void test2(){}//Cannot override the final method
  20. //static没有被被重写
  21. public static void test3(){
  22. System.out.println("Test,test");
  23. }
  24. public static void main(String...agrs){
  25. Base A = new Test();
  26. Base B = new Test();
  27. //A.test();//The method test() from the type Base is not visible
  28. A.test2();//Base,test2
  29. A.test3();//Base,test3
  30. B.test2();//Base,test2
  31. B.test3();//Base,test3
  32. }
  33. }

转自:http://www.cdtarena.com/javapx/201303/8067.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值