首页 > 其他分享 >2.4. 封装与访问控制

2.4. 封装与访问控制

时间:2023-05-29 23:02:21浏览次数:35  
标签:封装 Person 访问控制 方法 访问 属性 com public 2.4

封装(Encapsulation)是面向对象编程的一个核心概念,它意味着将数据(属性)和方法(操作数据的函数)捆绑在一起,形成一个类(Class)。封装的目的是将数据和操作数据的方法隐藏起来,以防止外部对数据的直接访问。这样,我们就可以通过定义公共接口(Public Interface)来控制外部对类的访问,提高代码的可维护性和安全性。

Java 提供了四种访问修饰符(Access Modifier)来实现封装,它们分别是:publicprivateprotected 和不写(默认)。访问修饰符可以修饰类的属性和方法,不同的访问修饰符有不同的访问权限。

  1. public:最高权限,表示该属性或方法可以被任何其他类访问。
  2. private:最低权限,表示该属性或方法只能被其所在的类访问。
  3. protected:较低权限,表示该属性或方法可以被其所在类及其子类和同一包中的其他类访问。
  4. 默认:表示该属性或方法可以被其所在类和同一包中的其他类访问,但不能被子类访问。

让我们通过一个案例来了解这四种访问修饰符。

// 位于包 com.example 的 Person 类
package com.example;

public class Person {
    public String name;        // 公共属性,任何类都可以访问
    private int age;           // 私有属性,只能在 Person 类中访问
    protected String address;  // 受保护属性,可以在 Person 类,同一包中的类和子类中访问
    String phoneNumber;        // 默认属性,可以在 Person 类和同一包中的类访问,但不能被子类访问

    public void sayHello() {   // 公共方法,任何类都可以访问
        System.out.println("Hello! I am " + name);
    }

    private void growUp() {    // 私有方法,只能在 Person 类中访问
        age++;
    }

    protected void changeAddress(String newAddress) { // 受保护方法,可以在 Person 类,同一包中的类和子类中访问
        address = newAddress;
    }

    void updatePhoneNumber(String newNumber) { // 默认方法,可以在 Person 类和同一包中的类访问,但不能被子类访问
        phoneNumber = newNumber;
    }
}
// 位于包 com.example 的 Employee 类
package com.example;

public class Employee extends Person {
    public void work() {
        sayHello();            // 可以访问父类的公共方法 sayHello
        changeAddress("New York"); // 可以访问父类的受保护方法 changeAddress
    }
}
// 位于包 com.other 的 Another 类
package com.other;

import com.example.Person;

public class Another {
    public void test() {
        Person person = new Person();
        person.sayHello();     // 可以访问 Person 类的公共方法 sayHello
    }
}

这个例子中,Person 类有四个属性和四个方法,分别使用了四种不同的访问修饰符。Employee 类继承了 Person 类,可以访问其公共方法和受保护方法。Another 类虽然不在同一包中,但是可以访问 Person 类的公共方法。

当我们设计类时,应该尽量将属性设置为 private,并通过公共方法(如 getter 和 setter)来访问这些属性。这样做可以确保类的实现细节不会泄露给外部,提高代码的可维护性和安全性。

总结一下,封装和访问控制是面向对象编程的核心概念之一。通过使用访问修饰符,我们可以限制类的属性和方法的访问权限,从而保护类的实现细节。理解这些概念并在实际编程中应用它们,可以帮助我们编写更加健壮、可维护的代码。

file

file

参考文章:

https://mp.weixin.qq.com/s/dV2JzXfgjDdCmWRmE0glDA

https://mp.weixin.qq.com/s/an83QZOWXHqll3SGPYTL5g

标签:封装,Person,访问控制,方法,访问,属性,com,public,2.4
From: https://blog.51cto.com/u_14241752/6374601

相关文章

  • java之封装
    封装:将属性和方法封装为一个整体,属性和方法都有权限限制classPerson{privateintage;//私有属性,只能在本类中访问publicvoidsetAge(intage){if(age<0||age>200)age=0;else{this.age=age;......
  • ASEMI单向可控硅BT151参数,BT151封装,BT151体积
    编辑-Z单向可控硅BT151参数:型号:BT151存储接点温度范围Tstg:-40~150℃工作接点温度范围Tj:-40~125℃断态重复峰值电压VDRM:650V重复峰值反向电压VRRM:650VRMS导通电流IT(RMS):12A非重复浪涌峰值导通电流ITSM:120A峰值栅极电流IGM:2A平均栅极功耗PG(AV):0.5W峰值栅极功率PGM:5WIGT:4mAVGT:0.75VV......
  • ASEMI单向可控硅BT151参数,BT151封装,BT151体积
    编辑-Z单向可控硅BT151参数:型号:BT151存储接点温度范围Tstg:-40~150℃工作接点温度范围Tj:-40~125℃断态重复峰值电压VDRM:650V重复峰值反向电压VRRM:650VRMS导通电流IT(RMS):12A非重复浪涌峰值导通电流ITSM:120A峰值栅极电流IGM:2A平均栅极功耗PG(AV):0.5W峰值栅极功率PGM:5WIG......
  • vue对kindeditor进行封装以及使用
    下载kindeditor后需要使用的文件如下(其他没用到的可删除)封装成组件以及自定义上传插件上传图片后生成image标签插入上传文件后生成下载a链接插入<template><divclass="kindeditor-component"><inputid="file-input"style="display:none"type="file"&g......
  • 将ajax请求封装到jQuery库当中
    1. 手动把ajax封装到js库  28代码在com.bjpowernode.ajax.servletAjaxRequest10Servletpackagecom.bjpowernode.ajax.servlet;importjakarta.servlet.ServletException;importjakarta.servlet.annotation.WebServlet;importjakarta.servlet.http.HttpServlet;importja......
  • vue-封装组件-超出部分限制...,并且提示
    显示效果 代码:<template><divclass="tip"><el-tooltip:content="content"placement="top"width="400":disabled="!isShowTooltip"><spanclass="me......
  • jQuery库的初次封装
    1.  AJAX代码封装  22-26- AJAX请求相关的代码都是类似的,有很多重复的代码,这些重复的代码能不能不写,能不能封装一个工具类。要发送ajax请求的话,就直接调用这个工具类中的相关函数即可。- 接下来,手动封装一个工具类,这个工具类我们可以把它看做是一个JS的库。我们把这个JS库起......
  • redhat6访问控制
    redhat6访问控制应用环境:客户因安全要求限制访问设备。准备设备:服务器1:10.163.6.130服务器2:10.163.6.131测试需求:端口1:8080应用端口端口2:55555ssh端口需求1:允许10.163.6.130访问10.163.6.131设备8080端口。需求2:允许10.163.6.130访问10.163.6.131设备55555端......
  • 封装 JDBCUtils和事务
    1. JDBC 的相关 API 小结  8322. 封装 JDBCUtils 【关闭连接, 得到连接】  8332.1 说明在jdbc操作中,获取连接和释放资源是经常使用到可以将其封装JDBC连接的具类JDBCUtils2.2 代码实现实际使用使用工具类 JDBCUtils代码在com.stulzl.utils.JDBCUtils      833......
  • ASEMI代理韩景元可控硅C106M参数,C106M封装,C106M尺寸
    编辑-Z韩景元可控硅C106M参数:型号:C106M断态重复峰值电压VDRM:600V通态电流IT(RMS):4A通态浪涌电流ITSM:30A平均栅极功耗PG(AV):0.2W峰值门功率耗散PGM:1W工作接点温度Tj:-40~125℃储存温度TSTG:-40~150℃断态重复峰值电流IDRM:≤5uA重复峰值反向电流IRRM:≤5uA栅极非触发电压VGD:≥0.2V C106......