首页 > 其他分享 >Day32--封装

Day32--封装

时间:2024-11-17 21:31:19浏览次数:1  
标签:封装 name -- s1 Day32 private Student public 属性

Day32--封装

该露的露,该藏的藏。

就像电视,大多数的数据线都隐藏起来了,只暴露出少量的接口和按键。我们不需要知道电视的具体构造,只用知道如何使用遥控器就行了。
我们程序设计要追求高内聚、低耦合”。高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;低耦合:仅暴露少量的方法给外部使用。

封装(数据的隐藏)。
通常:应禁止直接访问一个对象中数据的实际表示,而应通过操作接口来访问,这称为信息隐藏。

记住这句话就够了:属性私有,get/set。

封装主要是针对属性,很少针对方法

举例:

package com.liu.oop.demo04;

//private   私有
public class Student {

    private String name;   //    名字

    private int id;  //    学号

    private char sex;  //    性别
}

此时,属性的修饰符是private

package com.liu.oop;

import com.liu.oop.demo04.Student;

public class Application {
    public static void main(String[] args) {
        Student s1 = new Student();
        s1.name
    }
}

此时,想要访问s1的name属性,但是会报错

image-20241117210403215

由于属性私有,所以即使在其他的类对对象初始化,也无法操作属性

所以这个时候,就要在私有属性旁,提供一些可以操作这个属性的方法

提供一些public的get、set方法

快捷键快速生成get、set方法:

Alt+Insert---->Getter\Setter

快捷键 s1.getName().sout

package com.liu.oop.demo04;

//private   私有
public class Student {
    //属性私有

    private String name;   //    名字

    private int id;  //    学号

    private char sex;  //    性别

    //提供一些可以操作这个属性的方法
    //提供一些public的get、set方法

    //get  获取数据
    public String getName(){
        return this.name;
    }

    //set  为数据设置值
    public void setName(String name){
        this.name=name;
    }
}

此时

package com.liu.oop;

import com.liu.oop.demo04.Student;

public class Application {
    public static void main(String[] args) {
        Student s1 = new Student();
        s1.setName("刘");
        System.out.println(s1.getName());
    }
}

这里。没有直接操作属性,但是通过一些外部的方法操作属性

有时候,要对方法进行限制

​ 年龄要进行限制

 public void setAge(int age) {
        if (age <=130 && age > 0) {
            this.age = age;
        }else {
            this.age = 0;
        }
    }

此时

s1.setAge(1300);
        System.out.println(s1.getAge());  //0
/*
封装的意义
1. 提高程序的安全性,保护数据。
2. 隐藏代码的实现细节。 用户只用输入年龄,不用知道具体的代码实现细节
3. 统一接口。   get/set
4. 系统可维护性增加了。
 */

标签:封装,name,--,s1,Day32,private,Student,public,属性
From: https://www.cnblogs.com/xiaokunzhong/p/18551142

相关文章

  • Day32--重载
    Day32--重载在Java中,重载(overloading)是指在同一个类中,多个方法具有相同的名字,但有不同的参数列表。以下是对Java重载的详细解释:一、重载的主要特点和作用增加方法的灵活性:通过重载,可以为同一个操作提供多种不同的实现方式,以适应不同的输入参数。例如,一个用于计算两个数......
  • MLLM_20241117
    Paper1题目:INFERENCEOPTIMALVLMSNEEDONLYONEVISUALTOKENBUTLARGERMODELS作者团队:KevinY.Li,SachinGoyal,JoãoD.Semedo,J.ZicoKolter(CMU)链接:https://arxiv.org/abs/2411.033121.论文试图解决什么问题?是否是一个新问题?论文试图解决VLMs推理阶......
  • SM 集训记录
    DAY0(2024.11.15)T2GYM104787M首先定义一个副本连通块是只经过编号\(>n\)的节点形成的连通块。不难发现一个副本连通块(绿色)会连接着一些编号\(<n\)的叶子,然后与原图联通,并且与原图相同部分组成一个对称的连通块。就像下面的图一样:然后假如有\(lf\)个叶子(蓝色节点),其实......
  • 2024-2025-1 20241328 《计算机基础与程序设计》第八周学习总结
    2024-2025-120241328《计算机基础与程序设计》第八周学习总结作业信息课程2024-2025-1-计算机基础与程序设计作业要求2024-2025-1计算机基础与程序设计第八周作业作业目标功能设计与面向对象设计,面向对象设计过程,面向对象语言三要素,汇编、编译、解释、执行作......
  • 2024-2025-1 20241304 《计算机基础与程序设计》第8周学习总结
    2024-2025-120241304《计算机基础与程序设计》第8周学习总结作业信息|这个作业属于哪个课程|<2024-2025-1-计算机基础与程序设计)|>|-- |-- ||这个作业要求在哪里|<作业要求的链接>(如2024-2025-1计算机基础与程序设计第八周作业)||这个作业的目标|<学习目标功能设计与面......
  • 团队项目冲刺--Day5
    每天举行站立式会议情况简述敏捷开发起始时间2024/11/1500:00敏捷开发终止时间2024/11/1600:00会议基本内容摘要详细,汇报了各自进度,并对接下来的工作进行安排参与讨论人员全体参与讨论时长2024/11/1512:30-13:401h10m昨天已完成的工作成员......
  • NOIP 模拟 9
    A送信卒直接二分。B共轭树图看了好多篇题解都说的不太清楚,随便观察一下得知子树间互不影响,且没有边相交,在不连直接父亲的情况下,孩子的父亲一定比祖先的父亲靠上,所以这道题考虑的是和祖先的关系,而不是与孩子的关系,然后这个时候可简单地设计出一种状态,\(f_{u,i}\)表示\(u\)......
  • NOIP 模拟 8
    搬的【MX-S5】梦熊NOIP2024模拟赛1(同步赛)A王国边缘倍增写脸上了。B买东西题反悔贪心写脸上了,首先按物品价格从小到大排序,这样之前用的优惠券一定可以给现在的优惠券用,如果给价格为\(a\),折扣价为\(w\)的物品用了优惠为\(x\)的优惠券,现在拿过来给\(b\)用后的贡献是......
  • log 工具
    #defineBUF_MAX_SIZE(1024)enum{SILENCEFATALERRORNOTICEINFODEBUGTRACE}voidpr_logs(intlevel,constchar*fmt,...);intg_level=INFO;#definemlog_trace(fmt,...)pr_logs(TRACE,"[%s][%d]"fmt,__FUNCTION__,__LINE__,##__V......
  • HBase的常用命令
    一、general类1、查看集群的状态status2、查看数据库版本version3、显示当前用户和组whoami4、查看操作表的命令table_help5、退出hbaseexit或者ctrl+c二、DDL相关注:DDL是用于定义和管理数据库中的结构的命令,例如创建,删除,修改表等操作1、创建表注:创建表的时候需......