Java封装性(包含this关键字,构造器等)

2023-11-18

目录

一、封装性的含义

二、封装性的作用

三、封装性的体现

3.1、四种权限修饰符的介绍

3.2、分装性具体的实现

四、构造器的解释

4.1、构造器的作用

4.2、注意事项

 4.3、构造器的举例说明

五、this关键字的使用

5.1、this修饰属性和方法 

5.2、this 调用构造器

5.3、this的举例


一、封装性的含义

        封装性的作为java面向对象思想的三大特征之一。从字面上看,就是将一部分的东西整合成一个整体。用专业的术语来讲,可以理解为:隐藏对象内部的复杂性,只对外公开简单的接口。(通俗来讲封装性的设计思想:把该隐藏的隐藏起来,该暴露的暴露出来)

二、封装性的作用

①提高了代码的复用性。

②提高了代码的安全性。(利用private访问控制符,让访问权限降到最低,从而提高安全性)

③降低了代码的复杂程度。(将复杂的内部细节全部进行封装,只留下简单的接口,通过接口进行对方法的调用。)

三、封装性的体现

        在了解实现分装性前我们要先了解Java的四种权限修饰符。

3.1、四种权限修饰符的介绍

        Java权限修饰符 public、protected、default、private 可以放置在类的成员对象定义前,4 种权限用来修饰类及类的内部结构:属性、方法、构造器、内部类 (不同权限的访问权限如下:)

        注意:class 的权限修饰只可以用public 和 default(缺省)。

3.2、分装性具体的实现

        我们将类的属性私有化(private)同时,要提供公共的(public)getxxx和setxxx方法来获取和输出值。(示例代码如下)

package cn.spilt_charging.contact;

public class Animal {
	
	public static void main(String[] args) {
		animals animals = new animals();
		
		animals.name = "小白";
		//animals.age = 10;   //无法直接调用(age为私有性)
		//animals.legs = 4;     //无法直接调用(legs为私有性)
		
		animals.setAge(10);   //通过权限为public的setAge()方法录入age的值
		animals.setLeg(4);    //通过权限为public的setLeg()方法录入legs的值
		
		System.out.print("这只动物的名字叫做:" + animals.name + 
				",年龄为:" + animals.getAge() + "岁," + "有" + animals.getLeg() + "条腿");
		//相对应的私有性的age和legs要分别使用getAge()、getLeg()方法输出。
	}
}

class animals{
	String name; //动物的名字
	private int age;  //动物的年龄(私有性)
	private int legs;  //动物的腿的个数(私有性)
	
	public void setLeg(int legs) {  //legs对应的set方法
		this.legs = legs;
	}
	
	public int getLeg(){    //legs对应的get方法
		return legs;
	}
	
	public void setAge(int age) {  //age对应的set方法
		this.age = age;
	}
	
	public int getAge() {   //age对用的get方法
		return age;
	}
}

(代码中涉及到了Java的构造器和this关键字,下面会一一进行介绍)

四、构造器的解释

4.1、构造器的作用

①创建对象

②初始化对象的属性

4.2、注意事项

①如果没有显示的定义类的构造器的话,则系统默认提供一个空参的构造器。

②定义构造器的格式:权限修饰符 类名(形参列表){}  

③一个类中定义的多个构造器,彼此之间会构成重载。

④一旦显示的定义类的构造器后,系统就不会再提供默认的空参构造器。

⑤一个类中,至少有一个构造器。

 4.3、构造器的举例说明

(这些都是构造器)

	public animals() {
		System.out.print(".......");
	}
	
	public animals(String name) {
		name = name;
	}
	
	public animals(String name,int age) {
		name = name;
		age = age;
	}

就3.2的代码来说,下面代码中 animals()就是构造器

        animals animals = new animals();

五、this关键字的使用

this 用来修饰、调用:属性、方法、构造器

5.1、this修饰属性和方法 

this 理解为:当前对象 , 或当前正在创建的对象。
①在类的方法中,我们可以使用 "this. 属性 " 或 "this. 方法 " 的方式,调用当前对象属性或方法。通常情况下,我们都选择省略“this.”。特殊情况下,如果方法的形参和类的属性同名,我们必须显式的使用 "this. 变量 " 的方式,表明此变量是属性,而非形参。
②在类的构造器中,我们可以使用 "this. 属性 " 或 "this. 方法 " 的方式,调用正在创建的对象属性和方法。但是,通常情况下,我们都选择省略“this.”。特殊情况下,如果构造器的形参和类的属性同名,我们必须显式的使用 "this. 变量 " 的方式,表明此变量是属性,而非形参。

5.2、this 调用构造器

① 我们可以在类的构造器中,显式的使用 " this( 形参列表 ) " 的方式,调用本类中重载的其他的构造器!
② 构造器中不能通过 "this ( 形参列表 ) " 的方式调用自己。
③ 如果一个类中有 n 个构造器,则最多有 n -1 个构造器中使用了"this ( 形参列表 )"。
④ 规定: " this( 形参列表 ) " 必须声明在类的构造器的首行!
⑤ 在类的一个构造器中,最多只能声明一个 "this( 形参列表 )",用来调用其他构造器。

5.3、this的举例

如3.2的代码所示:

	public void setLeg(int legs) {  //legs对应的set方法
		this.legs = legs;
	}

	public void setAge(int age) {  //age对应的set方法
		this.age = age;
	}

 最后到这里,文章就结束了,如果在内容上有问题,恳请各位大佬指出。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java封装性(包含this关键字,构造器等) 的相关文章

  • 在游戏框架中编写功能测试的正确方法

    在为基于 play1 2 4 的 web 应用程序编写功能测试时 我对如何正确编码感到有点困惑 困惑在于所涉及的事务边界 我在某处读到每个测试都有自己的事务 在我的应用程序中 用户可以登录并向购物车添加一些商品 然后他可以提供一个地址 以便
  • 逐行读取 JTextPane

    有没有办法读取a的内容JTextPane逐行 很像 BufferedReader 吗 Element root textPane getDocument getDefaultRootElement 获得根元素后 您可以检查存在多少个子元素
  • 通过 JDBC 与 CLI 使用 MIT Kerberos 连接到 PostgreSQL 9.4 时出错

    我已经使用 MIT Kerberos 5 设置了 PostgreSQL 9 4 并且可以使用 psql 在 CLI 上连接 提交指纹后 我的委托人是 bgiles postgres REALM pg hba conf 有 host all
  • Java:BufferedInputStream 的 available() 方法存在问题

    我正在处理以下代码 用于将大文件拆分为一组较小的文件 FileInputStream input new FileInputStream this fileToSplit BufferedInputStream iBuff new Buff
  • 如何加载椭圆曲线 PEM 编码的私钥? [复制]

    这个问题在这里已经有答案了 我使用 OpenSSL 生成了椭圆曲线私钥 公钥对 私钥和公钥均采用 PEM 编码 我已经弄清楚如何加载公钥 感谢this https stackoverflow com a 40439081但是 我无法弄清楚如
  • 从 Java 启动外部进程:stdout 和 stderr

    我正在使用标准从 java 启动一个外部进程java lang Process 我试图弄清楚该过程的输出是什么 但是采用结合了两者的格式stdout and stderr 目前 我有Process getInputStream它提供了访问s
  • BigDecimal 中 Divide 方法的 Scale()

    new BigDecimal 37146555 53880000 divide new BigDecimal 1000000 scale 这返回10 但根据API divide method 返回一个 BigDecimal 其值为 这个 除
  • AES BadPaddingException

    如果我使用错误的密钥或错误的盐进行解密 则会引发 BadPaddingException 我希望返回一个不正确的字符串 doFinal 导致解密方法出现异常 信息 This is just an example Unfug S F V s
  • Knuth-Morris-Pratt 算法

    解决方案是Knuth Morris Pratt 算法 https en wikipedia org wiki Knuth E2 80 93Morris E2 80 93Pratt algorithm 干草堆 AAAAAAAAA 针 AAA
  • 大型 XML 的 XML 节点到字符串转换

    到目前为止我一直在使用DOM源在我的 Android 应用程序中将 XML 文件转换为字符串 这是我的代码 public String convertElementToString Node element throws Transform
  • JavaFX 动画使用循环?

    我正在尝试制作一款类似太空侵略者的游戏 我画了一个正方形 我想通过使用循环逐步向下移动它thread sleep 然而 正方形立即被绘制出来 我知道有可以使用的动画路径 但我想保持低水平并仅使用坐标系 有没有办法使用这样的循环来制作时间轴动
  • 酷还是傻? Catch(异常[NamingException, CreateException] e)

    我正在编写一些代码 我注意到异常处理中的一种模式让我思考 try do stuff throws JMS Create and NamingException catch NamingException e log1 e rollback
  • 在 JSF 自定义验证器中区分 ajax 请求和完整请求

    我的验证器需要知道它是完整请求还是 ajax 请求 在我当前的解决方案中 我检查 http 请求标头X Requested With元素 public void validate FacesContext context UICompone
  • 基于Java模式分割字符串

    您好 我有以下模式的日志文件 2014 03 06 03 21 45 432 ERROR mfs pool 3 thread 19 dispatcher StatusNotification Error processing notific
  • 无法从 ViewPager 中的 Fragment 编辑 ActionBar 标题

    我有一个Activity它通过一个托管多个片段ViewPager 在活动的onCreate方法我使用以下代码来更改ActionBar title Toolbar toolbar findViewById R id toolbar setSu
  • 不想保留一对一的实体

    假设我有两节课Employee and Department In Employee我已经写了 OneToOne fetch FetchType EAGER cascade CascadeType ALL JoinColumn name d
  • Android 以编程方式停止 toast 通知?

    有没有办法以编程方式停止 Toast 消息 假设我有一个按钮 单击它可以滚动 toast 消息 并且在 onclick 事件中我想停止队列中的所有消息并只显示新消息 我该怎么做 我的代码的简化版本如下 代码 public class Hel
  • 使用 OpenNLP 获取句子的解析树。陷入困境。

    OpenNLP 是一个关于自然语言处理的 Apache 项目 NLP 程序的目标之一是解析一个句子 并给出其语法结构的树 例如 天空是蓝色的 这句话 可能会被解析为 S NP VP The sky is blue where S是句子 NP
  • 用什么? MVC、MVP 或 MVVM 还是……?

    我将启动一个 Java 项目来开发桌面应用程序 使用什么作为表示层模式 MVC MVP MVVM 或 如果可能的话 举一些可行的小例子 Actually the ultimate post you re looking for is thi
  • 从 IntelliJ 运行 JavaFX 应用程序

    Versions openjdk版本 11 0 11 2021 04 20 OpenJDK 运行时环境 build 11 0 11 9 Ubuntu 0ubuntu2 20 10 OpenJDK 64 位服务器虚拟机 内部版本 11 0 1

随机推荐

  • iOS进阶_NSURLSession(二.断点续传)

    断点续传 从上一篇文章中 我们了解了使用NSURLSession进行文件下载 我们在其基础上继续探索NSURLSession的断点续传 在NSURLSession中 我们使用reumeData来存储下载的数据进度 import ViewCo
  • kali linux 报告工具集 faraday 忘记密码处理办法

    kali linux 报告工具集 faraday 忘记密码处理办法 第一步 切换到root 用户 执行命令 su root 第二步停止数据库服务 systemctl stop postgresql service 第三步重新启动数据库 sy
  • KMP 算法

    KMP 算法的核心是利用匹配失败后的信息 尽量减少模式串与主串的匹配次数以达到快速的匹配的目的 具体实现是通过一个next 函数来实现的 函数本身包含了模式串的局部匹配信息 KMP算法的时间复杂度O m n KMP 和 BF 唯一不一样的地
  • Pycharm如何配置解释器

    问题 安装Pycharm了就可以直接运行程序了吗 回答 不能 PyCharm是一种Python IDE 带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具 比如调试 语法高亮 Project管理 代码跳转 智能提示 自动完成
  • python-自定义函数(定义调用、默认参数、返回值)

    python 自定义函数 文章目录 python 自定义函数 初识函数 函数的定义与调用 函数的定义 参数列表 函数体 函数调用 默认参数 定义默认参数 默认参数的使用 默认参数的位置 默认参数为可变对象 默认参数为None 关键字参数传递
  • Linux系统管理-audit文件太多导致du -sh命令卡死

    1 问题现象 今日查询数据库文件系统的使用情况发现如下情况 du sh 卡死 进去下基层目录使用du sh 均未出现问题 2 问题分析 而在audit文件目录中使用du sh 命令时命令卡死 发现问题所在 使用ls查看audit目录的文件也
  • zsh: bad CPU type in executable: /usr/local/bin/git

    MAC安装nvm的时候报错zsh bad CPU type in executable usr local bin git 查找原因 通过where git可以看到有2个路径 一个 usr bin git一个 usr bin local g
  • 虚拟机--无法连接网络

    情况 运行命令 ifconfig 没有看到 ens33 网络 命令 ifconfig a 可以看到 ens33 其他 关闭防火墙 systemctl stop firewalld 查看状态 systemctl status firewall
  • HIT软件构造《设计模式》部分总结

    创造模式 创造模式关心的是对象类创造的过程应该遵循的原则 里氏替换原则 继承必须确保超类所拥有的性质在子类中仍然成立 里氏替换原则 Liskov Substitution Principle LSP 是面向对象的设计原则 通俗地讲 它指出了
  • 我放弃了VMware

    文章目录 哈哈哈 不得不说 有点儿标题狗的意思 不去写新闻真的屈才了 正如标题所说 我弃用了VMware 但是我使用上了WSL2 相对来说 wsl2使我不怎么担心我16G的内存不够用 其实 wsl也是虚拟技术的一种 但是相比VMware v
  • net start mysql80拒绝访问

    文章目录 1 问题描述 2 一次性解决方案 3 永久性解决方案 1 问题描述 问题描述 在我们使用dos窗口进行操作的时候 无论使用的是net start stop mysql80都会发生拒绝访问的问题 通常这个问题的发生都是因为大家把my
  • 国产信创服务器如何进行安全可靠的文件传输?

    信创 即信息技术应用创新 2018年以来 受 华为 中兴事件 影响 国家将信创产业纳入国家战略 并提出了 2 8 n 发展体系 从产业链角度 信创产业生态体系较为庞大 主要包括基础硬件 基础软件 应用软件 信息安全4部分构成 其中芯片 服务
  • ChatGPT知多少?小白扫盲,通俗易懂

    一 ChatGPT到底是什么 ChatGPT是由OpenAI 发布的自然语言模型 它的英文全称是 Chat Generative Pre trained Transformer 直译过来就是作为聊天使用的生成式预训练转换器 其中 Chat代
  • 此时不应有java_Java出现"此时不应有......."的错误

    今晚在安装weblogic的时候 双击运行startWebLogic cmd dos窗口一闪而过 随后将 startWebLogic cmd 拖进cmd窗口运行 显示 此时不应有 tools jar 然后我把环境变量CLASSPATH中的
  • H265视频转码H264视频

    LiveMedia视频平台提供H5网页web前端无插件视频码流 但目前主流浏览器和播放器都只支持H264的码流 但是随着编码技术的迭代 目前H265编码的视频已在安防行业得到了广泛的使用 平台仅支持H264需要客户修改前端的视频编码 这样会
  • html动态标题设计源码

    html酷炫动态发光标题 效果图如下 index html
  • 【spring boot logback】日志颜色渲染,使用logback-spring.xml自定义的配置文件后,日志没有颜色了...

    接着spring boot日志logback解析之后 发现使用logback spring xml自定义的配置文件后 日志没有颜色了 怎么办 官网处理日志链接 https logback qos ch manual layouts html
  • BeautifulSoup库

    BeautifulSoup安装 1 以管理员运行cmd 2 输入 pip install beautifulsoup4 BeautifulSoup库的基本元素 BeautifulSoup库的理解 BeautifulSoup库是解析 遍历 维
  • 【分享干货】Mac系统IDEA 安装教程

    IEEA 安装 什么是idea idea 介绍 idea官网 https www jetbrains com 外链图片转存失败 源站可能有防盗链机制 建议将图片保存下来直接上传 img Pynu6DTk 1654592966880 User
  • Java封装性(包含this关键字,构造器等)

    目录 一 封装性的含义 二 封装性的作用 三 封装性的体现 3 1 四种权限修饰符的介绍 3 2 分装性具体的实现 四 构造器的解释 4 1 构造器的作用 4 2 注意事项 4 3 构造器的举例说明 五 this关键字的使用 5 1 thi