Java编程思想第四版——第十三天
- 博客分类:
- Java
2012-04-18
108-118/913
Java编程思想第四版——第十三天
第5章 初始化与清理
不安全的编程方式成为编程代价高昂的主因之一。
初始化和清理(cleanup)是涉及安全的两个问题。很多C程序的错误都源于程序员忘记初始化变量。清理也是一个特殊问题,使用一个元素时,容易把它忘记,这个元素占用的资源一直得不到释放,导致资源用尽(尤其是内存)。
5.1 用构造器确保初始化
Java中,通过构造器,类的设计者可确保每个对象都会得到初始化。调用构造器是编译器的责任,初始化期间自动调用构造器。
Java沿用C++的解决方案,构造器采用与类相同的名称。
new Rock()创建对象时,为对象分配存储空间,并调用相应的构造器。确保在能操作对象之前,它已经被恰当的初始化了。
由于构造器的名称必须与类名完全相同,所以每个方法首字母小写的编码风格并不适用于构造器。
不接受任何参数的构造器叫做默认构造器,java文档中通常使用术语无参构造器。构造器也能带有形式参数,以便指定如何创建对象。
如果Tree(int)是Tree类中唯一的构造器,那么编译器将不允许以其他任何方式创建Tree对象。
构造器有助于减少错误,使代码更易于阅读。概念上讲,初始化与创建史彼此独立的,在java中,初始化和创建捆绑在一起,两者不能分离。
构造器是一种特殊类型的方法,没有返回值。这与返回值为空(void)明显不同,对于空返回值,尽管方法本身不会自动返回什么,但仍可选择让它返回别的东西。构造器不会返回任何东西。(new表达式返回了对新建对象的引用,但构造器本身并没有任何返回值。)
如果构造器有返回值,允许自行选择返回类型,那么势必得让编译器知道该如何处理此返回值。
5.2 方法重载
任何程序设计语言都具备的一项重要特性就是对名字的运用。创建对象,给此对象分配到的存储空间取一个名字。方法则是给某个动作取得名字。通过使用名字,可以引用所有的对象和方法。名字起得好可以使系统更易于理解和修改。
方法名相同而形式参数不同的构造器同时存在,必须用到方法重载。
方法重载是构造器所必须的,也可以应用于其他方法,且用法同样方便。
5.2 区分重载方法
每个重载的方法都必须有一个独一无二的参数类型列表。参数顺序的不同也可以区分两个方法,不过,一般情况下别这么做,因为这会使代码难以维护。
5.2.2 设计基本类型的重载
基本类型能从一个较小的类型自动提升至一个较大的类型,此过程一旦牵涉到重载,可能会造成一些混淆。
方法接受较小的基本类型作为参数,如果传入的实际参数较大,就得通过类型转换,来执行窄化转换,如果不这样做,编译器就会报错。
5.2.3 以返回值区分重载方法
根据方法的返回值来区分重载方法是行不通的。
5.3 默认构造器
默认构造器(又名“无参”构造器)是没有形式参数的,它的作用是创建一个默认对象,如果类中没有构造器,编译器会自动创建一个默认构造器。如果已经定义了一个构造器(无论是否有参数),编译器都不会再自动创建默认构造器了。
5.4 this关键字
为了能用简便、面向对象的语法来编写代码,即发送消息给对象,编译器做了一些幕后工作。它暗自把“所操做对象的引用”作为第一个参数传递给方法。
例:Banana a = new Banana(); b = new Banana();
a.peel(1); b.peel(2);
两个方法的调用实际上是:Banana.peel(a, 1); Banana.peel(b, 2);
这是内部的表示形式,不能这样书写代码,并试图通过编译,但这种写法能帮助了解实际所发生的事情。
如果想在方法的内部获得对当前对象的引用,由于这个引用是由编译器偷偷传入的,所以没有标识符可用。但是,为此有个专门的关键字:this。This关键字只能在方法内部使用,表示对“调用方法的那个对象”的引用。This的用法和其他对象引用并无不同,但要注意,如果在方法内部调用同一个类的另一个方法,就不必使用this,直接调用即可。当前方法中的this引用会自动应用于同一类中的其他方法。
可以加上this,但没有必要,编译器能自动添加。只有当需要明确指出对当前对象的引用时,才需要使用this关键字。例如,当需要返回对当前对象的引用时,就常常在return语句里这样写:return this;
This关键字对于将当前对象传递给其他方法很有用。
108-118/913
Java编程思想第四版——第十三天
第5章 初始化与清理
不安全的编程方式成为编程代价高昂的主因之一。
初始化和清理(cleanup)是涉及安全的两个问题。很多C程序的错误都源于程序员忘记初始化变量。清理也是一个特殊问题,使用一个元素时,容易把它忘记,这个元素占用的资源一直得不到释放,导致资源用尽(尤其是内存)。
5.1 用构造器确保初始化
Java中,通过构造器,类的设计者可确保每个对象都会得到初始化。调用构造器是编译器的责任,初始化期间自动调用构造器。
Java沿用C++的解决方案,构造器采用与类相同的名称。
new Rock()创建对象时,为对象分配存储空间,并调用相应的构造器。确保在能操作对象之前,它已经被恰当的初始化了。
由于构造器的名称必须与类名完全相同,所以每个方法首字母小写的编码风格并不适用于构造器。
不接受任何参数的构造器叫做默认构造器,java文档中通常使用术语无参构造器。构造器也能带有形式参数,以便指定如何创建对象。
如果Tree(int)是Tree类中唯一的构造器,那么编译器将不允许以其他任何方式创建Tree对象。
构造器有助于减少错误,使代码更易于阅读。概念上讲,初始化与创建史彼此独立的,在java中,初始化和创建捆绑在一起,两者不能分离。
构造器是一种特殊类型的方法,没有返回值。这与返回值为空(void)明显不同,对于空返回值,尽管方法本身不会自动返回什么,但仍可选择让它返回别的东西。构造器不会返回任何东西。(new表达式返回了对新建对象的引用,但构造器本身并没有任何返回值。)
如果构造器有返回值,允许自行选择返回类型,那么势必得让编译器知道该如何处理此返回值。
5.2 方法重载
任何程序设计语言都具备的一项重要特性就是对名字的运用。创建对象,给此对象分配到的存储空间取一个名字。方法则是给某个动作取得名字。通过使用名字,可以引用所有的对象和方法。名字起得好可以使系统更易于理解和修改。
方法名相同而形式参数不同的构造器同时存在,必须用到方法重载。
方法重载是构造器所必须的,也可以应用于其他方法,且用法同样方便。
5.2 区分重载方法
每个重载的方法都必须有一个独一无二的参数类型列表。参数顺序的不同也可以区分两个方法,不过,一般情况下别这么做,因为这会使代码难以维护。
5.2.2 设计基本类型的重载
基本类型能从一个较小的类型自动提升至一个较大的类型,此过程一旦牵涉到重载,可能会造成一些混淆。
方法接受较小的基本类型作为参数,如果传入的实际参数较大,就得通过类型转换,来执行窄化转换,如果不这样做,编译器就会报错。
5.2.3 以返回值区分重载方法
根据方法的返回值来区分重载方法是行不通的。
5.3 默认构造器
默认构造器(又名“无参”构造器)是没有形式参数的,它的作用是创建一个默认对象,如果类中没有构造器,编译器会自动创建一个默认构造器。如果已经定义了一个构造器(无论是否有参数),编译器都不会再自动创建默认构造器了。
5.4 this关键字
为了能用简便、面向对象的语法来编写代码,即发送消息给对象,编译器做了一些幕后工作。它暗自把“所操做对象的引用”作为第一个参数传递给方法。
例:Banana a = new Banana(); b = new Banana();
a.peel(1); b.peel(2);
两个方法的调用实际上是:Banana.peel(a, 1); Banana.peel(b, 2);
这是内部的表示形式,不能这样书写代码,并试图通过编译,但这种写法能帮助了解实际所发生的事情。
如果想在方法的内部获得对当前对象的引用,由于这个引用是由编译器偷偷传入的,所以没有标识符可用。但是,为此有个专门的关键字:this。This关键字只能在方法内部使用,表示对“调用方法的那个对象”的引用。This的用法和其他对象引用并无不同,但要注意,如果在方法内部调用同一个类的另一个方法,就不必使用this,直接调用即可。当前方法中的this引用会自动应用于同一类中的其他方法。
可以加上this,但没有必要,编译器能自动添加。只有当需要明确指出对当前对象的引用时,才需要使用this关键字。例如,当需要返回对当前对象的引用时,就常常在return语句里这样写:return this;
This关键字对于将当前对象传递给其他方法很有用。
发表评论
-
Java编程思想第四版——第二十一天
2012-05-04 12:56 5492012-05-04 163-170/913 Java编 ... -
Java编程思想第四版——第二十天
2012-05-03 13:45 6612012-05-03 158-163/913 Java编程思 ... -
Java编程思想第四版——第十九天
2012-05-02 11:08 7782012-05-02 149-158/913 Java编程思 ... -
Java编程思想第四版——第十八天
2012-04-27 13:12 9702012-04-27 142-149/913 Java编 ... -
Java编程思想第四版——第十七天
2012-04-25 11:18 7162012-04-25 138-142/913 Java编程思 ... -
Java编程思想第四版——第十六天
2012-04-24 13:50 7142012-04-24 131-138/913 Java编 ... -
Java编程思想第四版——第十五天
2012-04-23 17:14 7252012-04-23 121-131/913 Java编程思 ... -
Java编程思想第四版——第十四天
2012-04-19 11:28 5962012-04-19 118-121/913 Java编程思 ... -
Java编程思想第四版——第十二天
2012-04-09 10:58 6992012-04-09 102-108/913 Java编 ... -
Java编程思想第四版——第十一天
2012-04-05 12:21 7852012-04-05 Java编程思想第四版——第十一天 ... -
Java编程思想第四版——第十天
2012-03-31 12:03 5312012-03-31 97-102/913 Java编程思想 ... -
Java编程思想第四版——第九天
2012-03-30 14:59 6022012-03-30 80-97/913 Java编程思想第 ... -
Java编程思想第四版——第八天
2012-03-29 12:09 4562012-03-29 76-80/913 3.6 自动递增和 ... -
Java编程思想第四版——第七天
2012-03-28 12:24 6322012-03-28 70-76/913 昨天找 ... -
Java编程思想第四版——第六天
2012-03-27 13:02 5012012-03-27 66-70/913 最近两 ... -
Java编程思想第四版——第五天
2012-03-23 15:09 9202012-03-23 60-66/913 2.5 方法、参数 ... -
Java编程思想第四版——第四天
2012-03-22 12:41 5612012-03-22 54-60/913 第二章 ... -
Java编程思想第四版——第三天
2012-03-21 12:40 5412012-03-21 47-54/913 1.12 并 ... -
Java编程思想第四版——第二天
2012-03-20 13:54 711今天本来以为进度可以 ... -
Java编程思想第四版——第一天
2012-03-19 15:57 756Java已经丢手一年了 ...
相关推荐
Java编程思想(第4版)读书笔记by CZFJava编程思想(第4版)读书笔记by CZFJava编程思想(第4版)读书笔记by CZF
基于java编程思想(Thinking in java, TIJ)的教学课件,教学设计请见http://blog.csdn.net/Florianjin
我制作的java编程思想的教学课件,紧跟着“java编程思想教学材料——开端”
很有名的一本书—————Java编程思想【第4版】习题答案
实训项目八:JAVA网络编程(csdn)————程序
基于java编程思想(Thinking in java, TIJ)的教学PPT,教学设计请见http://blog.csdn.net/Florianjin
Java之SSH深入浅出——精简剖析
java8函数式编程(csdn)————程序
Java 基本语法(四)——字串和数组 Java 基本语法(四)——字串和数组
java 面向对象编程(csdn)————程序
非常全面的java教程,包含了java的基础技术,还有数据库,网络,GUI方面的知识,非常好的一个教程
计算机软件开发的Java编程语言及应用——评《Java编程方法论》.pdf
做坦克游戏,学Java编程(四)——添加炮弹类.pdf
——————————————————————————————————————————————
《Java 工程师的编程逻辑》——用 java 看计算机世界。
利用Java进行疫情大数据分析——“Java面向对象程序设计”课程实践教学设计研究.pdf
java网络编程——网络版题库程序(主要技术java+socket+多线程+mysql),程序是C/S 版本的,由于服务器端是java写的,所有客户端使用android也是很容易与服务器对接的