深入学习java构造函数

*来自对构造函数的继承,及相关调用思考得到,主要还是从《java面向对象编程》得来

*在多级继承的情况下,将从继承树的最上层的父类开始,依次执行各个类的构造方法,

这可以保证子类对象从所有直接或间接父类中继承来的实例都被正确的初始化。

*当子类的构造方法没有用super语句显示的调用父类的构造方法,而父类中又没有提供默

认的构造方法(jdk提供的默认构造方法)时,将会出现编译错误。

public class Grapha {
  // public Grapha() {
// System.out.println("Grapha()");
// }
  public Grapha(String name) {
 System.out.println("Grapha()");
}
}
  class Father extends Grapha{
  /**
* a compile error happen.
* implicit super constructor Grapha() is undifined,must explicity invoke another constructor
**/
public Father() {
 System.out.println("Father()");
}
/**
* a compile error happen.
* implicit super constructor Grapha() is undifined,must explicity invoke another constructor
**/
public Father(String name){
}
}

*从上面可以得出,如果一个类即不允许其他程序员用new语句来构造它的实例,又不允许它有子类,就可以

把它所有的构造方法定义为private的。

另外一种使一个类不能有子类的方法是将类声明改为final的。

由上面可以想到用静态工厂模式:

*单例模式(singleton)

*枚举类

*具有实例缓存的类

*具有实例缓存的不可变类

时间: 2024-10-07 16:57:10

深入学习java构造函数的相关文章

学习Java多线程之同步_java

如果你的java基础较弱,或者不大了解java多线程请先看这篇文章<学习Java多线程之线程定义.状态和属性> 同步一直是java多线程的难点,在我们做android开发时也很少应用,但这并不是我们不熟悉同步的理由.希望这篇文章能使更多的人能够了解并且应用java的同步. 在多线程的应用中,两个或者两个以上的线程需要共享对同一个数据的存取.如果两个线程存取相同的对象,并且每一个线程都调用了修改该对象的方法,这种情况通常成为竞争条件. 竞争条件最容易理解的例子就是:比如火车卖票,火车票是一定的,

java-关于学习Java的电脑配置

问题描述 关于学习Java的电脑配置 网上看到一款组装的笔记本,配置如下:CPU英特尔赛扬J1800,内存4G,硬盘320G,不知用来学习java,以及数据库等行不行.请各位大神不吝赐教 解决方案 开个玩笑,如果影响你编程最大的因素是总是控制不住自己想玩游戏,那么买个老一点的电脑恐怕更好--电脑慢得都看不成电影也玩不了游戏了,学习编程还绰绰有余. 事实上,只要开机能进系统的计算机,都可以用来学习编程.当年我刚上大学学习编程的计算机不过是Intel Celeron 266MHz(0.266GHz,

转-如何学习java

:(如何学习Java呢?) 枫叶国游子 2001-07-04 12:37:58 我可以结合自己的经验大致给你说一说,希望对你有所帮助,少走些弯路. 学习Java其实应该上升到如何学习程序设计这种境界,其实学习程序设计又是接受一种编程思想.每一种语言的程序设计思想大同小异,只是一些由语言特性的而带来的细微差别,比如Java中的Interface,你几乎在以前的学习中没有碰到过.以下我仔细给你说几点: 1.我们必须明确一个大方向,也就是说现在面向对象的编程范畴.尽管人工智能曾经有所浪潮(看看Borl

小议学习java的浮躁心态-引出篇

"切忌浮躁"--我想这是在任何学习方法中,都会特意提出来的. 在国内的几个论坛也混了几年,甚至眼看着曾经轰轰烈烈的javaunion从成长到消失.在javaunion ,chinajavaworld,dev2dev,javaresearch,cn-java等论坛上,也相遇或结识了很多java爱好者,有经验丰富者,也有初出茅庐者. 其实,国内技术论坛,是个很奇怪很有意思的地方.从这里成长了一批批的开发者,但也从这里消失了一批批的开发者.犹记得javaunion论坛曾经的一篇名为"

小议学习java的浮躁心态-分析篇

  知识是需要沉淀的:思想也是在不断的学习.磨练中走向成熟的:而技术也是在不断的创造中开拓的. 在<引出篇>中,我简单的举了一个身边的例子,以及夸张的描述了一个浮躁学习的状态.这些只简单的点出了浮躁心态的表象,那么现在让我们来分析一些根源. 在<引出篇>的议论中,有朋友提到"软件业的浮躁"一词,也建议在"分析篇"中从这方面分析一下.有关"软件业"之类的议论,在各大论坛或网站上比比皆是,有抱有积极心态的,有唉声叹气的,有发牢

学习java的一些好的书籍介绍

学习一门新的知识,不可能指望只看一本,或者两本书就能够完全掌握.需要有一个循序渐进的阅读过程.我推荐Oreilly出版的Java系列书籍.     在这里我只想补充一点看法,很多人学习Java是从<Thinking in Java>这本书入手的,但是我认为这本书是不适合初学者的.我认为正确的使用这本书的方法应该是作为辅助的读物.<Thinking in Java>并不是在完整的介绍Java的整个体系,而是一种跳跃式的写作方法,是一种类似tips的方法来对Java很多知识点进行了深入

java日记:学习java一年体会1

2005年3月24日         晴          于 北京交通大学16号宿舍楼 现在读大二下学期了,从大一下学期开始学习java,旁听java课程,到现在正式地上了必修的课程,一年多以来,感觉上对J2SE大概有了一个理解.不敢说钻研得很深刻,但是也能解决许多问题了. 一年来,在学习的过程中,遇到了许多问题和困难,解决问题之余也渐渐积累了不少经验.现在,同学之间讨论或者许多询问的问题中,我觉得许多都非常有代表性.从初学者的角度看,我觉得我可以提供一些经验,使现在的初学者可以少走一些弯路,

学习java语言思想 了解java语言优势

虽然Java技术是那么的诱人,前景也似乎非常光明,但是不是已经有了C.C++等广泛应用并且大获成功的语言了吗?微软不是又在大力推广他们的.Net技术吗?LISP.Prolog等人工智能语言在北美洲.欧洲的金融领域不是也有很大的应用吗?学习Java编程,是不是一个明智的选择呢? 带着这些问题,让我们来看看Java的优势. 1.免费! Sun免费提供用来开发Java应用程序的一切,你不必付任何的版税.或许你会将信将疑:资本家搞共产了?实际上,Sun在Java上的收益确实不大,远远比不过垄断Java应

新手入门:学习Java的一点经验心得

心得 在Java私塾的学习快完成了,突然想把自己的学习心得总结一下. 我觉得在JAVA的初期阶段尽量少用工具,像eclipse,JBuild这些工具可以晚一点在用, 最开始有个写字板和JDK就可以了,我觉得在开始阶段主要是为了打下扎实的基础,不然有时工具很多都帮你生成了, 也是为了培养一种好的编程习惯,最初的时候还是自己多动动手好了,毕竟没有学会走路跑步肯定快不了. 学习JAVA一定要先把JAVA的几个基本组成元素学好. 1.数据类型: JAVA是一种强类型语言,各种类型不会自动转换,使用前必须