zoukankan      html  css  js  c++  java
  • 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. privatefinalvoid test(){
    4. System.out.println("Base,test");
    5. }
    6. publicfinalvoid test2(){
    7. System.out.println("Base,test2");
    8. }
    9. publicstaticvoid test3(){
    10. System.out.println("Base,test3");
    11. }
    12. }
    13. publicclass Test extends Base
    14. {
    15. //允许子类和父类都有private final存在,但是不允许都有public final存在
    16. privatefinalvoid test(){
    17. System.out.println("Test,test");
    18. }
    19. //public final void test2(){}//Cannot override the final method
    20. //static没有被被重写
    21. publicstaticvoid test3(){
    22. System.out.println("Test,test");
    23. }
    24. publicstaticvoid 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

  • 相关阅读:
    平均值(Mean)、方差(Variance)、标准差(Standard Deviation) (转)
    4.3 使用 SQL 语句操作数据框
    4.2 数据框的行、列选择
    4.1 基本数据管理
    2.2.5 因子的使用
    Python执行时间的计算方法
    pypy安装与使用
    win7下查看进程端口
    python去除BOM头ufeff等特殊字符
    java查看线程的堆栈信息
  • 原文地址:https://www.cnblogs.com/cdtarena/p/2982617.html
Copyright © 2011-2022 走看看