摘要: 仅对本类可见:private 对多有类可见:public 对本类和多有子类可见:protected 对本包可见:默认,不需要修饰符 阅读全文
posted @ 2020-09-21 21:04 刘指导 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 如果自下而上在类的继承层次结构中上移,位于上层的类更加具有通用性,甚至可能更加抽象.从某中角度看,祖先类更加通用,人们只将它作为派生其他类的基类,而不作为想使用的特定的实例类.例如:考虑一下Employee类层次的扩展.一名雇员是一个人,一名学生也是一个人.将Preson和Student类添加到层次 阅读全文
posted @ 2020-09-21 20:59 刘指导 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 有时候,可能希望阻止人们利用某个类定义子类.不允许扩展的类被称为final类.如果在定义类的时候使用了final修饰符就表面这个类是final类.例如,假设希望阻止人们定义Executive类的子类,就可以在定义这个类的时候,使用final修饰符声明. public final class Exec 阅读全文
posted @ 2020-09-21 19:59 刘指导 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 现在有两个类,Employee和Manager,其中Employee是父类,Manager是子类 public class Employee{ private String name; private double salary; public Employee(String name,double 阅读全文
posted @ 2020-09-21 19:27 刘指导 阅读(255) 评论(0) 推荐(0) 编辑
摘要: 一定要保证数据私有 这是最重要的;绝对不要破坏封装性.有时候,需要编写一个访问器方法或更改器方法,但是最好还是保持实例域的私有性.很多惨痛的经验告诉我们,数据的表示形式很可能会改变,但他们的使用方式却不会经常发生变化.当数据爆出私有时,它们表示形式的变化不会对类的使用者产生影响,即出现bug也易于检 阅读全文
posted @ 2020-09-21 17:11 刘指导 阅读(107) 评论(0) 推荐(0) 编辑
摘要: 前面已经讲过两种初始化数据域的方法: 在构造器中设置值 在声明中复制 实际上,java还有第三种机制,称为初始化块.在一个类的声明中,可以包含对个代码块.只要构造类的对象,这些块就会被执行.例如 class Employee{ private static int nextId; private i 阅读全文
posted @ 2020-09-21 16:20 刘指导 阅读(223) 评论(0) 推荐(0) 编辑
摘要: 关键字this引用方法的隐式参数.然而,这个关键字还有另外一个含义. 如果构造器的第一个语句形如this(....),这个构造器将调用同一个类的另一个构造器.下面是一个典型的例子: class Employee{ public Employee(double s){ //calls Employee 阅读全文
posted @ 2020-09-21 15:54 刘指导 阅读(329) 评论(0) 推荐(0) 编辑
摘要: 通过重载类的构造器方法,可以采用多种形式设置类的实例域的初始状态.确保不管怎样调用构造器,每个实例域都可以被设置为一个有意义的初值,这是一种很好的设计习惯. 可以在类定义中,直接将一个值赋给任何域,例如: class Employee{ private String name = "tom"; .. 阅读全文
posted @ 2020-09-21 15:40 刘指导 阅读(217) 评论(0) 推荐(0) 编辑
摘要: 如果在构造器中没有显式地给域赋予初值,那么就会被自动赋为默认值:数值为0,布尔值为false,对象引用为null. 这是域与局部变量的主要不同点.必须明确地初始化方法中的局部变量.但是,如果没有初始化类中的域,将会被自动初始化为默认值. class Employee{ private String 阅读全文
posted @ 2020-09-21 15:27 刘指导 阅读(1008) 评论(0) 推荐(0) 编辑
摘要: 有些类有多个构造器.例如:可以如下构造一个空的StringBuilder对象: StringBuilder message = new StringBuilder(); 或者可以指定一个初始字符串: StringBuilder todoList = new StringBuilder("To do: 阅读全文
posted @ 2020-09-21 15:00 刘指导 阅读(104) 评论(0) 推荐(0) 编辑
摘要: 静态域 如果将域定义为static,每个类中只有这样一个域.而每一个对象对于所有的实例域却都有自己的一份拷贝.例如需要给每一个雇员赋予唯一的标识码.这里给Employee类添加一个实例域id和一个静态域nextId: class Employee{ private static int nextId 阅读全文
posted @ 2020-09-21 11:46 刘指导 阅读(320) 评论(0) 推荐(0) 编辑