Java类的封装

封装将类的某些信息隐藏在类内部,不允许外部程序直接访问,只能通过该类提供的方法来实现对隐藏信息的操作和访问

封装的特点:

	只能通过规定的方法访问数据。隐藏类的实例细节,方便修改和实现。

实现封装的具体步骤如下:

1 . 修改属性的可见性来限制对属性的访问,一般设为 private。

2 . 为每个属性创建一对赋值(setter)方法和取值(getter)方法,一般设为 public,用于属性的读写。

3 . 在赋值和取值方法中,加入属性控制语句(对属性值的合法性进行判断)。

一个员工的主要属性有姓名、年龄、联系电话和家庭住址。假设员工类为 Employee,示例如下:

public class Employee {private String name; // 姓名private int age; // 年龄private String phone; // 联系电话private String address; // 家庭住址public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {// 对年龄进行限制if (age < 18 || age > 40) {System.out.println("年龄必须在18到40之间!");this.age = 20; // 默认年龄} else {this.age = age;}}public String getPhone() {return phone;}public void setPhone(String phone) {this.phone = phone;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}
}

如上述代码所示,使用 private 关键字修饰属性,这就意味着除了 Employee 类本身外,其他任何类都不可以访问这些属性。但是,可以通过这些属性的 setXxx() 方法来对其进行赋值,通过 getXxx() 方法来访问这些属性。

在 age 属性的 setAge() 方法中,首先对用户传递过来的参数 age 进行判断,如果 age 的值不在 18 到 40 之间,则将 Employee 类的 age 属性值设置为 20,否则为传递过来的参数值。

编写测试类 EmployeeTest,在该类的 main() 方法中调用 Employee 属性的 setXxx() 方法对其相应的属性进行赋值,并调用 getXxx() 方法访问属性,代码如下:

public class EmployeeTest {public static void main(String[] args) {Employee people = new Employee();people.setName("王红");people.setAge(21);people.setPhone("13853835964");people.setAddress("河南省洛阳市");System.out.println("姓名:" + people.getName());System.out.println("年龄:" + people.getAge());System.out.println("电话:" + people.getPhone());System.out.println("家庭住址:" + people.getAddress());}
}
运行该示例,输出结果如下: 
姓名:王红
年龄:21
电话:13853835964
家庭住址:河南省洛阳市

通过封装,实现了对属性的数据访问限制,满足了年龄的条件。在属性的赋值方法中可以对属性进行限制操作,从而给类中的属性赋予合理的值, 并通过取值方法获取类中属性的值(也可以直接调用类中的属性名称来获取属性值)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/564692.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python 公众号菜单_Python脚本--微信公众号自定义菜单的创建及获取

#-*- coding: utf-8 -* importtkMessageBoximporturllib2importjsonimportsys reload(sys) sys.setdefaultencoding(UTF-8) appID wxa46e26b3d591f9f2 //测试号信息 appsecret 83ee70dbb6dbc1e090971554b1c7981b //同上 menu { //菜单信息&#xff0c;包括一级菜单和二级菜单&q…

深度学习多模态融合_3D目标检测多模态融合综述

0前言本篇文章主要想对目前处于探索阶段的3D目标检测中多模态融合的方法做一个简单的综述&#xff0c;主要内容为对目前几篇几篇研究工作的总结和对这个研究方面的一些思考。在前面的一些文章中&#xff0c;笔者已经介绍到了多模态融合的含义是将多种传感器数据融合。在3D目标检…

Java封装图书信息类

封装示例编写表示图书的 Book 类&#xff0c;实现以下需求&#xff1a; 基本信息包括图书名称&#xff08;bookName&#xff09;、总页数&#xff08;pagelbtalNum&#xff09;&#xff0c;其中页数不能少于 200 页&#xff0c;否则输出错误信息&#xff0c;并赋予默认值 200。…

python tkinter数据库通讯录_TKINTER--GUI连接数据库登陆

#-*- coding:UTF-8 -*- import tkinter.messagebox import tkinter as tk import pymysql # 构造窗口 window tk.Tk() window.title(登陆窗口) window.geometry(450x300) # 构造画布 canvas tk.Canvas(window,height200,width500) image_file tk.PhotoImage(filewelcome.gif…

自适应宽_移动端实现自适应缩放界面的方法汇总

作者 | 唐宋元明清2188来源 | http://www.cnblogs.com/kybs0/在开发App端的网页时&#xff0c;要适配iphone、ipad、ipod、安卓等各种机型&#xff0c;一般是直接使用em、px转em、界面缩放。本章是通过将界面缩放&#xff0c;等比例显示在各机型上。过程中遇到了些问题和大坑~然…

Java继承简介

继承是面向对象的三大特征之一。继承和现实生活中的“继承”的相似之处是保留一些父辈的特性&#xff0c;从而减少代码冗余&#xff0c;提高程序运行效率。 Java 中的继承就是在已经存在类的基础上进行扩展&#xff0c;从而产生新的类。已经存在的类称为父类、基类或超类&…

各种说明方法的答题格式_初中语文阅读答题公式 语文阅读理解万能公式大全...

很多人想知道初中语文阅读理解有哪些答题公式&#xff0c;语文阅读理解的万能公式有哪些呢?下面小编为大家介绍一下!初中语文阅读理解答题公式大全(一)某句话在文中的作用&#xff1a;1、文首&#xff1a;开篇点题;渲染气氛(散文)&#xff0c;埋下伏笔(记叙类文章)&#xff0c…

esp8266手机端网络调试助手_esp8266定时控制

要实现定时控制&#xff0c;需要先实现手动控制&#xff0c;或者app控制。实测定时精度&#xff0c;北京时间&#xff0c;误差不超过1秒。第一、远程App控制或手动控制下载esp8266示例程序下载地址: 点击下载本demo 是利用arduino IDE开发&#xff0c;关于arduino IDE 的ESP826…

集成学习之Adaboost(提升方法)

Adaboost 提升方法就是从弱学习器出发&#xff0c;反复学习&#xff0c;得到一系列弱分类器&#xff08;基本分类器&#xff09;&#xff0c;然后组合这些弱分类器&#xff0c;构成一个强分类器。 基本思路 待解决问题 1、每一轮如何改变训练数据的权值或概率分布 2、如何将…

Java super关键字详解

由于子类不能继承父类的构造方法&#xff0c;因此&#xff0c;如果要调用父类的构造方法&#xff0c;可以使用 super 关键字。super 可以用来访问父类的构造方法、普通方法和属性。 super 关键字的功能&#xff1a; 在子类的构造方法中显式的调用父类构造方法访问父类的成员方…

93没有了_杭州1米93程序员征婚贴火了!年薪50万,孩子随妈姓,没有皇位要继承...

文丨三秋桂子自从二胎政策开放以来&#xff0c;很多宝妈都希望二宝能随自己姓&#xff0c;但有些男方家庭却不同意&#xff0c;双方就孩子的“冠名权”一事争论不休。可最近有位小伙却因为征婚贴火了&#xff0c;原因有两个&#xff0c;一是小伙瞩目的身高&#xff0c;二是小伙…

李航《统计学习方法》之HMM隐马尔可夫模型

李航《统计学习方法》之HMM隐马尔可夫模型 文章目录前言一、基本概念1、语言描述&#xff1a;2、符号表示3、基本假设4、例子5、隐马尔可夫模型解决的三个基本问题二、概率计算算法1、向前算法算法&#xff1a;例题2、向后算法三、学习算法1、监督学习算法背景方法2、无监督学习…

Java对象类型转换

将一个类型强制转换成另一个类型的过程被称为类型转换。本节所说的对象类型转换&#xff0c;是指存在继承关系的对象&#xff0c;不是任意类型的对象。当对不存在继承关系的对象进行强制类型转换时&#xff0c;会抛出 Java 强制类型转换&#xff08;java.lang.ClassCastExcepti…

python下载在哪个盘_Windows下载安装python详情和注意事项

因为Python是跨平台的&#xff0c;它可以运行在Windows、Mac和各种Linux/Unix系统上。在Windows上写Python程序&#xff0c;放到Linux上也是能够运行的。 首先就得把Python安装到你的电脑里。安装后&#xff0c;你会得到Python解释器&#xff08;就是负责运行Python程序的&…

6000毫安以上智能手机_展望2021年智能手机市场:这5大技术要爆发

2020年是极不平凡的一年&#xff0c;在黑天鹅、政治动荡等事件的冲击下&#xff0c;许多行业都按下了暂停键&#xff0c;智能手机行业自然也不例外。销售渠道受阻、供应链生产紧张&#xff0c;导致智能手机市场整体出货量呈现持续下跌的状况&#xff0c;严峻的市场行情让智能手…

无监督学习之聚类方法(K-Means、层次聚类)

一、导入 无监督学习中需要对无标记样本进行训练学习进而找到数据的内在性质和逻辑结构&#xff0c;聚类方法是为了为无监督学习的数据分析提供的基础学习方法。 聚类将数据集划分为若干个子集&#xff08;每个子集称为类或者簇&#xff09;&#xff0c;如果一个样本只属于一个…

js调用python接口_JavaScript如何调用Python后端服务

欢迎关注【无量测试之道】公众号&#xff0c;回复【领取资源】, Python编程学习资源干货、 PythonAppium框架APP的UI自动化、 PythonSelenium框架Web的UI自动化、 PythonUnittest框架API自动化、 资源和代码 免费送啦~ 文章下方有公众号二维码&#xff0c;可直接微信扫一扫关注…

详细地图_一目了然:蒙城学区划分详细地图

从明天(8月5日)起&#xff0c;小学一年级&#xff0c;初中一年级可在网上注册、报名了。根据区域内适龄学生人数、学校分布、学校规模、班额规定、交通状况等因素&#xff0c;以街道、路段、门牌号、居住小区、村组等构成要件&#xff0c;按照确保公平和免试就近入学的原则&…

奇异值分解SVD(证明全部省略)

SVD知识梳理一、引入二、SVD的定义、性质定义例题奇异值分解一定存在紧奇异值分解和截断奇异值分解几何解释三、SVD算法计算过程四、SVD与矩阵近似五、python实现六、应用一、引入 主成分分析PCA、潜在语义分析都会用到SVD 不要求A矩阵是方阵&#xff0c;SVD是线性代数中相似对…