1.1 构造器注意的点
·构造器与类同名
·每个类可以有一个以上的构造器
·构造器可以有0个、1个或多个参数
·构造器没有返回值·构造器总是伴随着new操作一起调用
warning:
不要在构造器中定义与实例域重名的局部变量
1.2 是否内联
在Java中,所有的方法都必须在类的内部定义,但并不表示它们是内联方法。
是否将某个方法设置为内联方法是Java虚拟机的任务。即时编译器会监视调用
那些简洁、经常被调用、没有被重载以及可优化的方法。
1.3 封装优点
*在有些时候,需要获得或设置实例域的值。
因此,应该提供下面三项内容:
·一个私有的数据域;
·一个公有的域访问器方法;(只返回实例域值的选择器称为域访问器)
·一个公有的域更改器方法。
虽复杂些但是好处有:
·可以改变内部实现,除了该类的方法之外,不会影响其他代码
.更改器方法可以执行错误检查,然而直接对域进行赋值将不会进行这些处理。
warning:
注意不要编写返回引用可变对象的访问器方法,例如:

其中Date对象可变,破坏了封装性。

在这里,d和harry.hireDay引用同一个对象(如上图所示)。对d调用更改器方法就可以自动地改变这个雇员对象的私有状态!
如果需要返回一个可变对象的引用,应该首先对它进行克隆(clone)。对象clone是指存放在另一个位置上的对象副本。
1.4 访问权限
方法可以访问所调用对象的私有数据。一个方法可以访问所属类的所有对象的私有数据。
如下写法是合法的:


1.5 私有方法
私有方法设置的原因:有时,可能希望将一个计算代码划分成若干个独立的辅助方法。通常,这些辅助方法不应该成为公有接口的一部分,这是由于它们往往与当前的实现机制非常紧密,或者需要一个特别的协议以及一个特别的调用次序。
对于私有方法,如果改用其他方法实现相应的操作,则不必保留原有的方法。
只要方法是私有的,类的设计者就可以确信:它不会被外部的其他类操作调用,
可以将其删去。如果方法是公有的,就不能将其删去,因为其他的代码很可能依赖它。
1.6 final实例域
可以用final定义实例域,但是在构建对象时必须对其初始化。执行构造器之后,不能再对它进行修改。
适用场合:基本类型域,不可变类域(类每个方法都不会改变其对象,String类不可变)
public class test {
static final StringBuilder builder = new StringBuilder();
public static void main(String[] args) {
// builder = new StringBuilder(); //不能把final域指向新的对象
//Error:The final field test.builder cannot be assigned
builder.append("using final"); // 然而,final域本身可以修改
System.out.println(builder.toString());
}
}
Java编程:深入理解用户自定义类
本文探讨了Java中的用户自定义类,重点介绍了构造器的使用、方法的内联、封装的重要性、访问权限控制、私有方法的作用以及final实例域的应用。通过实例解析了如何创建和管理类的私有数据,强调了封装对于保护对象状态和提高代码灵活性的价值。
1585

被折叠的 条评论
为什么被折叠?



