当前位置: 代码迷 >> Java相关 >> Java多态性的两个特殊情况
  详细解决方案

Java多态性的两个特殊情况

热度:155   发布时间:2013-03-26 15:19:30.0
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?
package com.xujin;

class Base{
private final void test(){
System.out.println("Base,test");
}
public final void test2(){
System.out.println("Base,test2");
}

public static void test3(){
System.out.println("Base,test3");
}
}

public class Test extends Base
{
//允许子类和父类都有private final存在,但是不允许都有public final存在
private final void test(){
System.out.println("Test,test");
}
//public final void test2(){}//Cannot override the final method

//static没有被被重写
public static void test3(){
System.out.println("Test,test");
}

public static void main(String...agrs){
Base A = new Test();
Base B = new Test();
//A.test();//The method test() from the type Base is not visible
A.test2();//Base,test2
A.test3();//Base,test3
B.test2();//Base,test2
B.test3();//Base,test3
}
}
java培训、成都PHP培训找最专业的成都软件培训机构成都达内。!成都java培训官网:http://www.cdtarena.com
搜索更多相关的解决方案: private  public  多态性  

----------------解决方案--------------------------------------------------------
  相关解决方案