Java私有构造函数不能阻止继承
下面是一个调用已经私有化的单列的函数的列子. 这里用了静态内部类,关键就是静态内部类可以访问外部类的私有构造函数。
这种算是变种继承吧。前提是可以在原来的单列类里添加代码。
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私有构造函数不能阻止继承相关推荐
- Java私有变量是否可继承
Java 父类中权限为private的私有变量,子类对象继承后,在其内存中其实也有该变量存在,只是不能直接引用该变量,而是需要通过调用父类public或protected的set或get等方法使用该变 ...
- Java性能优化(3):通过私有构造函数强化不可实例化的能力
有时候你可能会编写出只包含静态方法和静态域的类,这样的类有一些很不好的名声,因为有些人在面向对象的语言中滥用这样的类来编写过程化的程序.尽管如此,它们也确实有它们特有的用处,我们可以利用这种类,把操作 ...
- 第32节:Java中-构造函数,静态方法,继承,封装,多态,包
构造函数实例 class Cat{// 设置私有的属性 name private String name;// 设置name的方法public void setName(String Name) {t ...
- Java 中子类是否只继承父类的非私有变量和方法?
今天在 CSDN 论坛中见到有人问在 Java 中子类是否只继承父类的非私有变量和方法(原贴在此).大部分跟贴都认为这句话是正确的,但是对于这个问题背后的本质理解却是错误的. 首先我们明确一下&quo ...
- java 构造函数 单例_Java中的私有构造函数和单例类 - Break易站
Java 构造函数 Java中的私有构造函数和单例类 我们首先分析下面的问题: 我们可以有私人构造函数吗? 正如你可以很容易猜到的,就像我们可以为构造函数提供访问说明符一样.如果它是私人的,那么它只能 ...
- Java阻止继承(sealed,permits)
阻止继承 正常情况下,只要某个class没有final修饰符,那么任何类都可以从该class继承. 从Java 15开始,允许使用sealed修饰class,并通过permits明确写出能够从该cla ...
- Java并发实战-私有构造函数捕获
java并发编程实战P58 私有构造函数捕获:私有构造函数进行线程安全地对象复制转发:http://atbug.com/private-constructor-capture-idiom/ /** * ...
- python-装饰器,类与对象,私有字段,析构,__call__,继承,多继承,接口
1.装饰器执行流程 装饰器可用于权限管理: 装饰器:将原函数替换为wrapper函数 def outer() @outer --- func1作为参数传入outer() def wrapper() - ...
- java静态构造函数_为什么不允许使用Java静态构造函数?
java静态构造函数 Java Static Constructor is not allowed, but why? Before we dig into the reasons for not a ...
最新文章
- Pandas_transform的用法
- 【每日DP】day7P1064 金明的预算方案 (分组背包,我又悟了)难度⭐⭐★
- 2018-04-07进程创建学习流程
- hdu1518深搜DFS
- floa和position
- 【AI不惑境】学习率和batchsize如何影响模型的性能?
- 爱奇艺大数据生态的实时化建设
- Windows Phone开发之路(9) Silverlight之动画
- mysql upload_关于mysql数据库里的 upload子查询问题
- 与Java EE和Spring的集成架构
- php 中英文截取 php,PHP 中英文截取无乱码
- Mybatis_day2_Mybatis的CRUD操作
- 小米将开源进行到底!
- python列表字符全部改为大写_将包含字符串的Python列表转换为小写或大写
- 电力职称计算机英语成绩查询,职称考试成绩查询
- 【工作流引擎--Snaker介绍】
- url中出现“%22”等如何处理?如何判断url中是否有“%22等”?如何获取当前网址?传入多个参数在url上? encodeURL和(js)
- 电脑中找不到ie浏览器怎么办
- CodeForces #379(734A|734B|734C|734D|734E|734F)|二分查找|模拟|树的半径|位运算
- 极其简单的响应式的模块化布局、看板布局 js 工具