美国上市公司,专注Java培训21年

Java面向对象教程第五节:Java 封装


一、Java 封装

在面向对象程式设计方法中,封装(英语:Encapsulation)是指一种将抽象性函式接口的实现细节部份包装、隐藏起来的方法。

封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。

要访问该类的代码和数据,必须通过严格的接口控制。

封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。

适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。

封装的优点

1. 良好的封装能够减少耦合。

2. 类内部的结构可以自由修改。

3. 可以对成员变量进行更精确的控制。

4. 隐藏信息,实现细节。

二、实现Java封装的步骤

1. 修改属性的可见性来限制对属性的访问(一般限制为private),例如:

public class Person { private String name; private int age; }

这段代码中,将 name 和 age 属性设置为私有的,只能本类才能访问,其他类都访问不了,如此就对信息进行了隐藏。

2. 对每个值属性提供对外的公共方法访问,也就是创建一对赋取值方法,用于对私有属性的访问,例如:

public class Person{ private String name; private int age; public int getAge(){ return age; } public String getName(){ return name; } public void setAge(int age){ this.age = age; } public void setName(String name){ this.name = name; } }

采用 this 关键字是为了解决实例变量(private String name)和局部变量(setName(String ame)中的name变量)之间发生的同名的冲突。

实例

让我们来看一个java封装类的例子:

EncapTest.java 文件代码:

/* 文件名: EncapTest.java */

public class EncapTest{

private String name;

private String idNum;

private int age;

public int getAge(){

return age;

}

public String getName(){

return name;

}

public String getIdNum(){

return idNum;

}

public void setAge( int newAge){

age = newAge;

}

public void setName(String ewName){

name = newName;

}

public void setIdNum( String newId){

idNum = newId;

} }

以上实例中public方法是外部类访问该类成员变量的入口。

通常情况下,这些方法被称为getter和setter方法。

因此,任何要访问类中私有成员变量的类都要通过这些getter和setter方法。

通过如下的例子说明EncapTest类的变量怎样被访问:

RunEncap.java 文件代码:

/* F文件名 : RunEncap.java */

public class RunEncap{

public static void main(String args[]){

EncapTest encap = new EncapTest();

encap.setName("James");

encap.setAge(20);

encap.setIdNum("12343ms");

System.out.print("Name : " + encap.getName()+ " Age : "+ encap.getAge());

} }

以上代码编译运行结果如下:

Name : James Age : 20

下一章节我们将介绍Java面向对象教程第六节:Java 接口

免责声明:内容和图片源自菜鸟教程,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。


【免责声明】本文部分系转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,如涉及作品内容、版权和其它问题,请在30日内与我们联系,我们会予以重改或删除相关文章,以保证您的权益!

Java开发高端课程免费试学

大咖讲师+项目实战全面提升你的职场竞争力

  • 海量实战教程
  • 1V1答疑解惑
  • 行业动态分析
  • 大神学习路径图

相关推荐

更多
  • Java教程第十三节:Java Character 类
    Java教程第十三节:Java Character 类
    Character 类用于对单个字符进行操作。 详情>>

    2019-05-22

  • Java教程第十四节:Java String 类
    Java教程第十四节:Java String 类
    字符串广泛应用 在 Java 编程中,在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作字符串。 详情>>

    2019-05-22

  • Java教程第十五节:Java StringBuffer 和 StringBuilder 类
    Java教程第十五节:Java StringBuffer 和 StringBuilder 类
    当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。 详情>>

    2019-05-22

  • Java教程第十六节:Java 数组
    Java教程第十六节:Java 数组
    数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同。 详情>>

    2019-05-23

  • Java开班时间

    收起