| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 584 人关注过本帖, 1 人收藏
标题:Java多态性的两个特殊情况
取消只看楼主 加入收藏
shitainong
Rank: 1
等 级:新手上路
帖 子:70
专家分:0
注 册:2012-7-6
结帖率:0
收藏(1)
 问题点数:0 回复次数: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.
搜索更多相关主题的帖子: private public 多态性 
2013-03-26 15:19
快速回复:Java多态性的两个特殊情况
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023207 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved