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

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

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私有构造函数不能阻止继承相关推荐

  1. Java私有变量是否可继承

    Java 父类中权限为private的私有变量,子类对象继承后,在其内存中其实也有该变量存在,只是不能直接引用该变量,而是需要通过调用父类public或protected的set或get等方法使用该变 ...

  2. Java性能优化(3):通过私有构造函数强化不可实例化的能力

    有时候你可能会编写出只包含静态方法和静态域的类,这样的类有一些很不好的名声,因为有些人在面向对象的语言中滥用这样的类来编写过程化的程序.尽管如此,它们也确实有它们特有的用处,我们可以利用这种类,把操作 ...

  3. 第32节:Java中-构造函数,静态方法,继承,封装,多态,包

    构造函数实例 class Cat{// 设置私有的属性 name private String name;// 设置name的方法public void setName(String Name) {t ...

  4. Java 中子类是否只继承父类的非私有变量和方法?

    今天在 CSDN 论坛中见到有人问在 Java 中子类是否只继承父类的非私有变量和方法(原贴在此).大部分跟贴都认为这句话是正确的,但是对于这个问题背后的本质理解却是错误的. 首先我们明确一下&quo ...

  5. java 构造函数 单例_Java中的私有构造函数和单例类 - Break易站

    Java 构造函数 Java中的私有构造函数和单例类 我们首先分析下面的问题: 我们可以有私人构造函数吗? 正如你可以很容易猜到的,就像我们可以为构造函数提供访问说明符一样.如果它是私人的,那么它只能 ...

  6. Java阻止继承(sealed,permits)

    阻止继承 正常情况下,只要某个class没有final修饰符,那么任何类都可以从该class继承. 从Java 15开始,允许使用sealed修饰class,并通过permits明确写出能够从该cla ...

  7. Java并发实战-私有构造函数捕获

    java并发编程实战P58 私有构造函数捕获:私有构造函数进行线程安全地对象复制转发:http://atbug.com/private-constructor-capture-idiom/ /** * ...

  8. python-装饰器,类与对象,私有字段,析构,__call__,继承,多继承,接口

    1.装饰器执行流程 装饰器可用于权限管理: 装饰器:将原函数替换为wrapper函数 def outer() @outer --- func1作为参数传入outer() def wrapper() - ...

  9. java静态构造函数_为什么不允许使用Java静态构造函数?

    java静态构造函数 Java Static Constructor is not allowed, but why? Before we dig into the reasons for not a ...

最新文章

  1. Pandas_transform的用法
  2. 【每日DP】day7P1064 金明的预算方案 (分组背包,我又悟了)难度⭐⭐★
  3. 2018-04-07进程创建学习流程
  4. hdu1518深搜DFS
  5. floa和position
  6. 【AI不惑境】学习率和batchsize如何影响模型的性能?
  7. 爱奇艺大数据生态的实时化建设
  8. Windows Phone开发之路(9) Silverlight之动画
  9. mysql upload_关于mysql数据库里的 upload子查询问题
  10. 与Java EE和Spring的集成架构
  11. php 中英文截取 php,PHP 中英文截取无乱码
  12. Mybatis_day2_Mybatis的CRUD操作
  13. 小米将开源进行到底!
  14. python列表字符全部改为大写_将包含字符串的Python列表转换为小写或大写
  15. 电力职称计算机英语成绩查询,职称考试成绩查询
  16. 【工作流引擎--Snaker介绍】
  17. url中出现“%22”等如何处理?如何判断url中是否有“%22等”?如何获取当前网址?传入多个参数在url上? encodeURL和(js)
  18. 电脑中找不到ie浏览器怎么办
  19. CodeForces #379(734A|734B|734C|734D|734E|734F)|二分查找|模拟|树的半径|位运算
  20. 极其简单的响应式的模块化布局、看板布局 js 工具

热门文章

  1. memcpy函数的实现
  2. 087-把PHP数组中的元素按随机顺序重新排列shuffle
  3. 读《构建之法》的心得体会
  4. SQL递归查询(with as)
  5. 如何在ASP.NET 5和XUnit.NET中进行LocalDB集成测试
  6. .NET常用功能和代码[总结与收藏] (转)
  7. █年薪20万招聘软件工程师!!!
  8. Actor模型(分布式编程)
  9. 【C语言及程序设计】项目2-15:模块化的简单银行系统设计
  10. DataTable 转为ListT集合