Java面向对象—封装

封装的概念

封装(Encapsulation)是面向对象方法的重要原则,是一种信息隐藏技术,就是把对象的属性和操作(或服务)结合为一个独立的整体,并尽可能隐藏对象的内部实现细节。

封装的优点

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

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

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

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

在java中通过访问限定符private,protected和public实现封装。

那么private,protected和public都是什么呢?下面我们来了解一下访问限定符。

访问限定符

Java中主要通过类和访问权限来实现封装:类可以将数据以及封装数据的方法结合在一起,更符合人类对事物的认知,而访问权限用来控制方法或者字段能否直接在类外使用。Java中提供了四种访问限定符:
在这里插入图片描述

  1. private 私有的:最小访问级别。

  2. default 系统默认值:包级私有访问级别。

  3. protected 受保护的:同类,同包,子类。

  4. public 公共的:最大访问级别。

上图中我们可以看到,四种限定符都提到了包的概念,那么什么是包呢?

封装扩展—包

包是对类、接口等的封装机制的体现,是一种对类或者接口等的很好的组织方式,为了更好的管理类,把多个类收集在一起成为一组,称为软件包。有点类似于目录。

自定义一个包:右键 src -> 新建(New) -> 包(Package)

在这里插入图片描述

创建完成后便可看到:

在这里插入图片描述

了解了包的概念后,我们来进行封装的实现。

封装的实现步骤

1、通过访问限制符修改类中属性的可见性,从而限制对类中属性的访问(一般限制为private)

class Person {
    private String name;  //名字
    private int age;  //年龄
}

当使用private修饰属性后,我们使用时编译器便会报错:

在这里插入图片描述

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

2、将成员变量赋值为private后,对类的成员变量设置权限,这样别的类就不能进行访问,若我们想使用该属性,则需在该类里面定义get与set方法,一个用于获取,一个用户修改。也就是对每个值属性提供对外的公共方法访问,即创建一对赋取值方法,用于对私有属性的访问。例如:

定义get与set方法:

1、右键-> Generate

在这里插入图片描述

2、点击创建Getter and Setter方法

在这里插入图片描述

3、根据自己需要的属性来定义

在这里插入图片描述

4、Get 、Set方法定义完成:

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关键字:是所在函数所属对象的引用,简单来说,哪个对象调用了this所在的函数,this就代表哪个对象。是为了解决实例变量(private String name)和局部变量(setName(String name)中的name变量)之间发生的同名的冲突。

封装案例

package demo;

class Person {
    private String name;  //名字
    private int age;  //年龄}

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
    public void result(){
        System.out.print(name+"今年"+age+"岁啦!");
    }

}

public class Test2 {
    public static void main(String[] args) {
        Person person=new Person();
        person.setName("小明");
        person.setAge(20);
        person.result();
    }
}

运行结果:

在这里插入图片描述

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值