现在前面几章是前几天记录的 ,后面的章节要慢慢发布了.我争取这个月看完这本书了,笔记很多是我自己看书体会出来的,可能有些表达不对.如果是这样,请指正.
第五章
1. 在java原文件中,可以有多个类,但是只能有一个public类,而且这个类名字和文件名字相同。
2. 在java解释器运行的时候 ,它首先去找classpath环境变量中,这些变量中有路径,java解释器就将这些目录当初根目录去找class文件。但是如果使用jar包,需要将文件名字也加到环境变量中间。如果有相同的类名字,就可以起冲突,这个时候需要明确指明类的位置。CLASSPATH需要大写
3. Java中的public,private,protect三个访问控制符,应该放在类的每个成员的定义的前面。不管这个成员是数据还是方法,一个访问控制符只管它后面一个成员,不象c++那样。Java中没有写三个访问控制符的话就使用默认控制权限。
4. 默认控制权限(package权限):同一个包内的类可以访问。Public:任何人,都可以访问这个成员。Private:表示除了这个类(包含这个成员的类)的方法,其它的一律不能访问。Protect:基类的方法可以访问,但是其他类不能访问
5. 每个文件(编译单元)中只能有一个public类,但是可以同时有多个辅助功能的类,如果一个文件中有两个或两个以上的public类,编译器将报错。Public类的名称需要和文件名称相同,包括字母的大小写要相同。否则编译器也将报错。文件中可以没有public类,虽然这样少见,这时文件名字可以随便取。
6. 类不能是private的和protect,类只有两种类型,public和package类型。如果你不想别人访问这个类 ,你可以将构造函数设置为private,这样别人就没有办法创建这个类的对象了,你可以提供一个static方法来创建对象。(注解一:另外一个影响是该类构造函数是private类型的。那么它不可继承。注解二:内部类可以使private和protected的。(有点不懂,待后面章节再理解))
7. 访问控制的两大原因:一个是禁止用户去碰它们不该碰的东西。这样可以简化它们对类的理解。二是让类库的设计者可以在不惊动客户程序员的前提下修改类库的内部运行机制。
第六章
1. 在设计方面一条基本的原则。将数据设计为private类型。将方法设计为public类型。当然碰到特殊的情况可以调整。
2. 在派生类中可能修改了基类某个方法(如draw()),当仍然需要调用基类的该方法时,可以使用super.draw()
3. 在派生类的构造函数作,会自动调用基类的无参数的构造函数。如果基类没有默认构造函数(无参数的构造函数),就必须使用super和合适的参数来明确调用基类对应的构造函数,并且该语句必须放在派生类构造函数最前面,编译器将先执行基类的构造函数,在执行派生类的构造函数。
4. Final有三个用途,分别用于数据(data),方法(method),和类(class)
l Final用于数据时,当数据类型是原始类型,说明这个数据是个常量。当这个数据类型是对象的reference时,就说明这个reference是个常量,一旦将reference连接到某个对象,就不能再连接到其他的对象。但是这个对象的本身数据可以修改(static说明只有一个),对final数据,可以在声明数据的时候赋值,也可以在构造函数中赋值。我们可以在参数中使用final,这个说明reference参与运算时不能指向其他对象
l Final用于方法:将final用于方法有两个作用,一个是给方法上锁,禁止派生类进行修改,二个原因就是效率,如果方法是final的。那么编译器就调用转换为内联(inline))(这个编译器会自动判断是否内联)
l Final用于类:等于说你不再继承这个类,你也不许别人来继承这个类。由于不能再继承这个类,所以类的所有方法都隐式的变为final
5. 在继承中的类的初始化:先初始化基类的static,然后是派生类的static。然后再创建对象的时候,这时对象中所有原始类型的变量将变为初始值,所有reference变为null,然后调用基类的构造函数,在调用派生类的构造函数