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

 更新时间:2024年03月27日 09:06:04   作者:ice-Hamster  
这篇文章主要介绍了Java中的封装性(包含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;
	}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java后端服务间歇性响应慢的问题排查与解决

    Java后端服务间歇性响应慢的问题排查与解决

    之前在公司内其它团队找到帮忙排查的一个后端服务连接超时问题,问题的表现是服务部署到线上后出现间歇性请求响应非常慢(大于10s),但是后端业务分析业务日志时却没有发现慢请求,所以本文给大家介绍了Java后端服务间歇性响应慢的问题排查与解决,需要的朋友可以参考下
    2025-03-03
  • jmeter正则表达式提取器的用法与正则详解

    jmeter正则表达式提取器的用法与正则详解

    在使用Jmeter过程中,会经常使用到正则表达式提取器提取器,下面这篇文章主要给大家介绍了关于jmeter正则表达式提取器的用法与正则的相关资料,需要的朋友可以参考下
    2022-07-07
  • Spring使用xml方式整合第三方框架流程详解

    Spring使用xml方式整合第三方框架流程详解

    这篇文章主要介绍了Spring使用xml方式整合第三方框架流程,Spring会在应用上下文中为某个bean寻找其依赖的bean,Spring中bean有三种装配机制,分别是:在xml中显式配置、在java中显式配置、隐式的bean发现机制和自动装配
    2023-02-02
  • Java随机数算法原理与实现方法实例详解

    Java随机数算法原理与实现方法实例详解

    这篇文章主要介绍了Java随机数算法原理与实现方法,简单分析了随机数算法的原理并结合具体实例形式给出了java编程计算随机数的具体操作技巧,需要的朋友可以参考下
    2017-09-09
  • Java Socket一对多通信实现之并发处理方式

    Java Socket一对多通信实现之并发处理方式

    这篇文章主要介绍了Java Socket一对多通信实现之并发处理方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • SpringBoot项目中访问HTML页面的三种方法

    SpringBoot项目中访问HTML页面的三种方法

    这篇文章主要介绍了SpringBoot项目中访问HTML页面的三种方法,文中通过代码示例和图文结合的方式讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-07-07
  • 你必须得会的SpringBoot全局统一处理异常详解

    你必须得会的SpringBoot全局统一处理异常详解

    程序在运行的过程中,不可避免会产生各种各样的错误,这个时候就需要进行异常处理,本文主要为大家介绍了SpringBoot实现全局统一处理异常的方法,需要的可以参考一下
    2023-06-06
  • Java基础之引用相关知识总结

    Java基础之引用相关知识总结

    今天聊聊Java的引用,大多数时候我们说引用都是强引用,只有在对象不使用的情况下才会释放内存,其实Java 内存有四种不同的引用.一起看看吧,,需要的朋友可以参考下
    2021-05-05
  • Maven项目引用第三方jar包找不到类ClassNotFoundException

    Maven项目引用第三方jar包找不到类ClassNotFoundException

    这篇文章主要为大家介绍了Maven项目引用第三方jar包找不到类ClassNotFoundException解决及原因分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • Struts和servlet不能共存问题解决方法

    Struts和servlet不能共存问题解决方法

    这篇文章主要介绍了Struts和servlet不能共存问题解决方法,共有三种方法,需要的朋友可以参考下。
    2017-09-09

最新评论