在这个例子中,类型/类的名称是 Light,可向 Light 对象发出的请求包括包括打开( on)、关闭( off)、变得更明亮( brighten )或者变得更暗淡( dim)。通过简单地声明一个名字( lt),我们为 Light 对象创建了一个“句柄”。然后用 new 关键字新建类型为 Light 的一个对象。再用等号将其赋给句柄。为了向对象发送一条消息,我们列出句柄名( lt),再用一个句点符号( .)把它同消息名称( on)连接起来。从中可以看出,使用一些预先定义好的类时,我们在程序里采用的代码是非常简单和直观的。
五、封装
封装,即隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别;将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员。封装的目的是增强安全性和简化编程,使用者不必了解具体的实现细节,而只是要通过外部接口,以特定的访问权限来使用类的成员。隐藏之后,外部程序就不能接触和改变那些细节,所以不用担心自己的类会受到非法修改,可确保它们不会对其他程序造成影响。
封装的原则:
1. 将不需要对外提供的内容都隐藏起来;
2. 把属性都隐藏,提供公共方法对其访问。
简单示例代码:
package com.alanlee;
public class Student {
//属性私有化,避免属性被直接使用和修改
private Integer age;
//对外提供公有的方法用来获取对象的属性值
public Integer getAge() {
return age;
}
//对外提供公有的方法,可以对对象的属性进行控制,避免不合法的操作
public void setAge(Integer age) {
if(age > 0 && age < 100){
this.age =age;
}else{
System.out.println("输入的年龄不合法!");
}
}
public static void main(String[] args) {
Student stu = new Student();
//赋值
stu.setAge(10);
//取值并打印
System.out.println(stu.getAge());
}
}