在说Java 三个特性之前,我们先了解一下什么是面向对象,以及为什么Java是面向对象的语言。 封装上面我们已经说到了Java是注重于类的编写,那么封装自然也是对类的封装。对类封装有很多好处。
如何对一个类进行封装,则需要根据这个类本身的客观属性与实际的需要。 public class MyTime{
public String date;
SimpleDateFormat df = new SimpleDateFormat('yyyy-MM-dd HH:mm:ss');//设置日期格式
date= df.format(new Date());
public String getDate() {
return date;
}
//
// public void setDate(String date) {
// this.date = date;
// }
} 显然这个类是只提供了显示系统的时间,不提供外部去修改系统时间的方法。这个也是根据类本身的客观属性而言,时间是固有不会人为改变的属性,当然诸如此类的例子,还有很多。我们只是简单举例来表明我们该如何设计类的外部访问方法。 访问权限在上面的代码中,我们已经看到可以调用getData()方法对date进行访问,但是date的修饰符是public ,换句话说,我们完全可以new 一个MyTime对象对date属性进行修改和读值,这就违背了我们封装的初衷。所以,Java引入了不同的访问权限来限定这件事情。在《Java编程思想》中讲解了下述的访问权限 总结在了解了封装的具体含义和好处之后,我们就可以利用上面的访问权限来对我们要向封装的东西进行封装,通过访问权限来隐藏具体的实现,和提供外部访问的接口。 public class Student {
private String name;
private String age;
private String handleName(String name){
return 'I'm ' name;
}
private String handleAge(String age) {
return age ' 岁';
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = handleName(name);
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = handleAge(age);
}
} 在上面的例子中,我们对Student类进行了简单的封装,首先我们切断了外部直接调用到name,age的可能,通过set和get方法来提供访问到name,age的方法,同时,上面的例子中也体现出来了,在外部访问方法不变的情况下,自己随意修改内部的实现,我们首先编写了只供类内部调用的Handle的方法,用Handle方法来修改name,age的显示结果。这样确保了修改显示结果的方法只能自己调用,而且在外部访问不变的情况下,根据需求修改内部的实现。这也是一个简单的封装例子。其调用的例子如下:student对象只能调用如下的内容,其他我们自己编写的内容是无法调用的。 public class Test {
public static void main(String[] args) {
Student student = new Student();
student.setName('byhieg');
student.setAge('23');
System.out.println(student.getName() ' ' student.getAge());
}
} |
|
来自: liang1234_ > 《开发原则》