Java面向对象的封装原则

封装:

通俗理解:在不想让外人看见自己所定义的内容,但是你可以使用(调用),怎么调用呢?通过先设置(set)下属性或者方法内容,然后你必须获取(get)下才可以调用。

在面向对象编程思想中,不仅把汁液多、糖分多、含有挥发性芳香物质、可以生食等的共同特征放到水果类里,同时也把水果的开花、落果、膨大、成熟等共同行为放到水果类里,这样水果类既包含了水果所具备的共同特征,也包含了开花、落果、膨大、成熟等共同行为。

当外部需要访问水果类时,调用水果类对外提供的访问方法来访问其共同特征和行为。例如:水果类提供了get方法来访问其属性(特征),提供了开花、落果、膨大、成熟等方法来访问其行为。同时通过Java关键字public、protected、private(在Java类一节会有详细介绍)设置水果类的访问权限。

由上面的内容可以看出,Java封装就是把现实世界同类事物的共同特征和行为抽取出来,放到一个新建的类中,并设置类属性(特征)和行为的访问权限,同时提供外部访问类属性和行为的方法。

把事物的属性和行为封装在一起,可以对外隐藏内部数据,控制用户对内部数据的修改和访问,封装也消除了面向过程编程中数据与操作分离所带来的种种问题,提高了程序的可复用性和可维护性。

下面以水果类为案例,具体说明封装的过程和优点。

启动eclipse,建立Fruits项目。在Fruits项目src目录下新建包com.milihua.fruits,如下图所示:

Java公共方法封装lib java封装的原则是什么_封装

图 11-4 新建水果类项目

在com.milihua.fruits包下新建FruitManager类,FruitManager类为水果管理类,负责水果品种的增加、删除,以及水果的展示等功能。在新建类时要注意勾选public static void main(String[] args)选项,如下图所示:

在com.milihua.fruits包下新建类Fruits类,Fruits类为水果类,负责水果的创建和展示。水果类封装代码如下:

Java公共方法封装lib java封装的原则是什么_Java_02

Fruits类的属性声明为私有的(private),方法声明为公共的(public)。这样,对象能够直接调用类中定义的所有方法,当对象要修改或得到自己属性的时候,就必须要调用已定义好的专用的方法才能实现。起到了隐藏内部数据,控制用户对内部数据修改和访问的作用。类的可复用性和可扩展性会在继承或多态一节讲到。

对于面向对象编程而言,需要掌握如下几点:

(1)抽象是把同类事物的共同特征抽取出来归纳为类,类的具体实例为对象。

(2)封装就是把抽取的事物属性和行为打包到一个类中,并隐藏内部数据和方法的实现过程。

(3)编程时要遵循对象调用方法,方法修改属性。

封装性的体现:

将类的属性私有化(private),同时提供公共(public)的方法来获取(get xxx)和设置(set xxx)此属性的值,且调用时不可以直接使用“对象。属性”。

public class PersonTest {
public staTIc void main(String[] args) {
Person b = new Person();//类的实例化
b.setAge(99);//调用对象的方法
b.setName(“Jack”);
System.out.println(“姓名为:” +b.getName() +“,年龄为:” +b.getAge());
}
}
public class Person {
private int age;//定义属性为私有的
private String name;
public int getAge() {//提供public方法获取属性
return age;
}
public void setAge(int i) {//提供public方法设置属性
if (i 《 0 || i 》 130) {
System.out.println(“年龄不符合规范!”);
}
age = i;
}
public String getName(){//提供public方法获取属性
return name;
}
public void setName(String n){//提供public方法设置属性
name = n;
}
}

关于权限修饰符的使用范围

Java公共方法封装lib java封装的原则是什么_java封装原则_03

Java提供的4种权限修饰符,用来修饰类(只能使用缺省、public)及类的内部结构:属性、方法、内部类、构造器