码迷,mamicode.com
首页 > 编程语言 > 详细

Java私有构造函数不能阻止继承

时间:2014-08-05 22:12:40      阅读:248      评论:0      收藏:0      [点我收藏+]

标签:style   color   java   ar   代码   new   size   mil   

下面是一个调用已经私有化的单列的函数的列子. 这里用了静态内部类,关键就是静态内部类可以访问外部类的私有构造函数。

这种算是变种继承吧。前提是可以在原来的单列类里添加代码。

class Single {

        private Single(){
                System.out.println("Single");
        }
        
        public void runSingleMethod()
        {
                System.out.println("runSingleMethod");
        }
        public static class Evil extends Single
        {
                public Evil(){
                        System.out.println("Evil");
                }
        }
}

public class SingleTest extends Single.Evil
{
        public SingleTest()
        {
                System.out.println("normal");
        }
        
        public static void main(String[] args) {
                SingleTest a = new SingleTest();
                a.runSingleMethod();
        }
}

output:

Single
Evil
normal
runSingleMethod

这个列子表明,要阻止继承,还是得靠关键字 final.
我不知道 可不可以用字节码增加包 比如ASM 包动态的给Single类增加上面的那段静态类代码,但是有一点在这里可以确认就是私有函数不能完全阻止继承。

Java私有构造函数不能阻止继承,布布扣,bubuko.com

Java私有构造函数不能阻止继承

标签:style   color   java   ar   代码   new   size   mil   

原文地址:http://www.cnblogs.com/princessd8251/p/3893087.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!