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关键字,构造器等) 的相关文章

随机推荐

  • 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