Java中的“君不君,臣不臣,父不父,子不子”
来源:互联网 发布:南京单片机工程师招聘 编辑:程序博客网 时间:2024/05/18 02:56
闲来无事,拿Java来看一下什么叫做“君不君,臣不臣,父不父,子不子”,没有想到的是,下面这段代码竟然可以编译通过,只是在执行的时候就死得很惨了:
分析一下代码,在类Test实例化的过程中要实例化一个SubTest类,而SubTest类实例化时又要先实例化它的父类Test,类Test实例化时又要实例化一个SubTest类...
真是“君不君,臣不臣,父不父,子不子”啊。
下面对代码进行一下简单的修改,将Test中的SubTest实例作为一个静态的类属性,代码如下:
这次可能出乎大家的预料了,这样是可以跑出结果来的,分析一下,应该是第一次实例化Test的时候,会实例化一个SubTest的静态属性,同样,实例化SubTest类时,需要实例化其父类Test,但第二次实例化Test类时将不再实例化类属性SubTest类,因此,不会产生前面的怪圈。
仔细看代码,这当然是个非常不合理的一种设计方式,首先SubTest类是Test类的子类,而Test类中则是存在了对其子类的引用,这样看来,Test类是一个先知了,他可以预先知道对自己做扩展的SubTest类的内容。简单看来,在Test类中有一个SubTest的实例,似乎SubTest应该是Test类的一个“臣”,而SubTest类又是Test类的子类,这样Test和SubTest这两个类似乎不只是“君臣”关系,还有一种“父子”关系,这样会明显给人一种设计不合理的感觉。那么再想一下,我国历代的皇帝与太子又是什么关系呢?Thinking...
- Java中的“君不君,臣不臣,父不父,子不子”
- Java 中的 & | ^
- [Java] Java中的浮点
- 【java】java中的异常
- 【Java】java中的this
- 【Java】Java中的JDBC
- Java--Java中的关键字
- 【Java】Java中的swap
- Windows中的\和Java中的\
- [java]java中的访问权限
- [ java ] java中的Random()注意!
- Java中的java.math.BigInteger
- 【Java】Java中的面向对象
- 【Java】Java中的接口问题
- 【java】:java中的StringBuffer类
- java--java中的位运算
- Java--Java中的编程规范
- Java中的java.lang.Math
- 脚本常用功能
- 真心话大接龙
- kernel基本功练习
- include 与 jsp:include的区别
- Agile Development 敏捷开发艺术-XP人员角色-20090326
- Java中的“君不君,臣不臣,父不父,子不子”
- 学习
- Abstract Class VS Interface | 抽象类VS接口
- 案例分析:校内网崛起原因及其发展前景
- onchange
- JavaScript中exec函数
- Ext Element与Component与Dom关系
- 一本关于网上支付解决方案的迷你百科全书
- 我们必须拥有这个功能,否则就完蛋了——项目经理应该小心的游戏之十一