您的位置 首页 java

JAVA笔记(八)面向对象——封装

Java 面向对象(三)–封装

一.包的使用:

1.包使用的原因:

Windows树形文件系统,文档分门别类,易于查找和管理,使用目录解决文件同名冲突问题,在java中如何解决存放两个同名的类而不冲突?

2.包使用的意义:

  • 解决类同名问题,防止命名冲突
  • 允许类组成较小的单元(类似文件夹),易于找到和使用相应的文件
  • 更好地保护类、属性和方法

3.包的创建:

  • 作为Java源代码第一条语句
  • 用package声明包,以分号结尾

代码如下:

  package  cn.hz;    //包名

public class Student {
    //代码省略...
}  

4.包的命名规范:

  • 包名由小写字母组成,不能以圆点开头或结尾
  • 包名之前最好加上唯一的前缀,通常使用组织倒置的 网络域名
  • 包名后续部分依不同机构内部的规范不同而不同

二、权限修饰符

学习封装之前我们先要学习java中对于权限的设定方式,java中用于限定使用范围的关键字有如下四种:

  • 私有权限 private: private可以修饰数据成员,构造方法,方法成员,不能修饰类(此处指外部类,不考虑内部类)。被 private 修饰的成员,只能在定义它们的类中使用,在 其他类中不能调用。
  • 默认权限 default: 类,数据成员,构造方法,方法成员,都能够使用默认权限,即不写任何关键字。默认权限即同包权限,同包权限的元素只能在定义它们的类中,以及同包 的类中被调用。
  • 受保护权限 protected: protected可以修饰数据成员,构造方法,方法成员,不能修饰类(此处指外部类,不考虑内部类)。被 protected 修饰的成员,能在定义它们的类中,同包 的类中被调用。如果有不同包的类想调用它们,那么这个类必须是定义它们的类的子类。
  • 公共权限 public: public可以修饰类,数据成员,构造方法,方法成员。被public修饰的成员,可以在任何一个类中被调用,不管同包或不同包,是权限最大的一个修饰符。

三、封装

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

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

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

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

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

1.封装的定义:

将属性私有化,并提供公共的访问方式。

2.封装的优点:

  • 良好的封装能够减少 耦合
  • 类内部的结构可以自由修改。
  • 可以对成员变量进行更精确的控制。
  • 隐藏信息,实现细节。

3.封装的步骤:

我们还是以学生类为演示

  • 首先修改学生的属性的可见性来限制对属性的方法(一般限制为private),代码如下
 package cn.hz;    //包名

public class Student {
    private  String  name;  //定义属性并私有化:学生姓名
    public int age;  //定义属性并私有化:学生

}  

以上代码将学生的属性name和age都限定为private私有,只能本类才能访问,其他类都访问不了,如此就对信息进行了隐藏。

  • 对每个值属性提供对外的公共方法访问,也就是创建一对赋取值方法,用于对私有属性的访问,代码如下:
 package cn.hz;    //包名

public class Student {
    private  String  name;  //定义属性并私有化:学生姓名
    public int age;  //定义属性并私有化:学生

    
    //提供给公共的访问方法:get获取
    public String getName() {
        return name;
    }
    //提供给公共的访问方法:set设置
    public void setName(String name) {
        this.name = name;
    }
     //提供给公共的访问方法:get获取
    public int getAge() {
        return age;
    }
    //提供给公共的访问方法:set设置
    public void setAge(int age) {
        this.age = age;
    }
}
  

采用 this 关键字是为了解决实例变量(private String name)和局部变量(setName(String name)中的name变量)之间发生的同名的冲突。(this在后期关键字章节详细讲解)。

文章来源:智云一二三科技

文章标题:JAVA笔记(八)面向对象——封装

文章地址:https://www.zhihuclub.com/180312.shtml

关于作者: 智云科技

热门文章

网站地图