摘要:
有时候,可能希望阻止人们利用某个类定义子类.不允许扩展的类被称为final类.如果在定义类的时候使用了final修饰符就表面这个类是final类.例如,假设希望阻止人们定义Executive类的子类,就可以在定义这个类的时候,使用final修饰符声明. public final class Exec 阅读全文
摘要:
现在有两个类,Employee和Manager,其中Employee是父类,Manager是子类 public class Employee{ private String name; private double salary; public Employee(String name,double 阅读全文
摘要:
一定要保证数据私有 这是最重要的;绝对不要破坏封装性.有时候,需要编写一个访问器方法或更改器方法,但是最好还是保持实例域的私有性.很多惨痛的经验告诉我们,数据的表示形式很可能会改变,但他们的使用方式却不会经常发生变化.当数据爆出私有时,它们表示形式的变化不会对类的使用者产生影响,即出现bug也易于检 阅读全文
摘要:
前面已经讲过两种初始化数据域的方法: 在构造器中设置值 在声明中复制 实际上,java还有第三种机制,称为初始化块.在一个类的声明中,可以包含对个代码块.只要构造类的对象,这些块就会被执行.例如 class Employee{ private static int nextId; private i 阅读全文
摘要:
关键字this引用方法的隐式参数.然而,这个关键字还有另外一个含义. 如果构造器的第一个语句形如this(....),这个构造器将调用同一个类的另一个构造器.下面是一个典型的例子: class Employee{ public Employee(double s){ //calls Employee 阅读全文
摘要:
通过重载类的构造器方法,可以采用多种形式设置类的实例域的初始状态.确保不管怎样调用构造器,每个实例域都可以被设置为一个有意义的初值,这是一种很好的设计习惯. 可以在类定义中,直接将一个值赋给任何域,例如: class Employee{ private String name = "tom"; .. 阅读全文
摘要:
如果在构造器中没有显式地给域赋予初值,那么就会被自动赋为默认值:数值为0,布尔值为false,对象引用为null. 这是域与局部变量的主要不同点.必须明确地初始化方法中的局部变量.但是,如果没有初始化类中的域,将会被自动初始化为默认值. class Employee{ private String 阅读全文
摘要:
有些类有多个构造器.例如:可以如下构造一个空的StringBuilder对象: StringBuilder message = new StringBuilder(); 或者可以指定一个初始字符串: StringBuilder todoList = new StringBuilder("To do: 阅读全文
摘要:
静态域 如果将域定义为static,每个类中只有这样一个域.而每一个对象对于所有的实例域却都有自己的一份拷贝.例如需要给每一个雇员赋予唯一的标识码.这里给Employee类添加一个实例域id和一个静态域nextId: class Employee{ private static int nextId 阅读全文