java-封装及其this 指针

java-封装及其this 指针

Java 封装


在面向对象程式设计方法中,封装(英语:Encapsulation)是指一种将抽象性函式接口的实现细节部份包装、隐藏起来的方法。

封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。

要访问该类的代码和数据,必须通过严格的接口控制。

封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。

适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。

封装的优点

  • 1. 良好的封装能够减少耦合。

  • 2. 类内部的结构可以自由修改。

  • 3. 可以对成员变量进行更精确的控制。

  • 4. 隐藏信息,实现细节。

 

实现Java封装的步骤

1. 修改属性的可见性来限制对属性的访问(一般限制为private)

例如:

public class Person { private String name; private int age; }

这段代码中,将 name 和 age 属性设置为私有的,只能本类才能访问,其他类都访问不了,如此就对信息进行了隐藏。

2. 对每个值属性提供对外的公共方法访问,也就是创建一对赋取值方法,用于对私有属性的访问

public class Person{
    private String name;
    private int age;
​
    public int getAge(){
      return age;
    }
​
    public String getName(){
      return name;
    }
​
    public void setAge(int age){
      this.age = age;
    }
​
    public void setName(String name){
      this.name = name;
    }
}

一般情况下:主要用于将成员变量私有化,最好再提供对应的set(),get()方法。提高对数据访问的安全性。

 

this指针:

(1)this:代表所在类的对象的引用
方法被哪个对象调用,this就代表那个对象
(2)使用this的情况:
局部变量和成员变量重名。这时候的this.变量名,代表的是所在类的对象的引用。

不加this

/*
	创建一个类。然后
	this 指针的作用就是用来区分两个相同变量的区别
	如果不用的话,就搞的是默认值
*/

class  person{
	//一般情况下,数据变量都得用private 
	private String  name;
	private  int age;
	//一个成员变量一般情况下,有一个获取成员变量,一个得到成员变量
	public void setname(String n){
		name = n;
	}
	public String getname(){
		return name;
	}
	public void setage(int k){
		age = k;
	}
	public int getage(){
			return age;
	}
	//空参构造函数
	person (){
		
	}
	//带参构造函数,函数重载
	person (String name,int age ){
		name = name;
		age = age;
	}
	
	public void talk(){
		System.out.println(name + "," + age +"岁会说话") ;
	}
	
}
class This {
	public static void main(String[] args){
		/*person gupei = new person();
		gupei.setname("王二麻子");
		System.out.println(gupei.getname());
		gupei.setage(18);
		System.out.println(gupei.getage());
		
		*/
		person gupei = new person("王二麻子",18);
		gupei.talk();
		
	}
	
}

结果会以字符串和整型的初始化来表示,没有达到想要的效果。
 

/*
	创建一个类。然后
	this 指针的作用就是用来区分两个相同变量的区别
	如果不用的话,就搞的是默认值
*/

class  person{
	//一般情况下,数据变量都得用private 
	private String  name;
	private  int age;
	//一个成员变量一般情况下,有一个获取成员变量,一个得到成员变量
	public void setname(String n){
		name = n;
	}
	public String getname(){
		return name;
	}
	public void setage(int k){
		age = k;
	}
	public int getage(){
			return age;
	}
	//空参构造函数
	person (){
		
	}
	//带参构造函数,函数重载
	person (String name,int age ){
		this.name = name;
		this.age = age;
	}
	
	public void talk(){
		System.out.println(name + "," + age +"岁会说话") ;
	}
	
}
class This {
	public static void main(String[] args){
		/*person gupei = new person();
		gupei.setname("谷沛");
		System.out.println(gupei.getname());
		gupei.setage(18);
		System.out.println(gupei.getage());
		
		*/
		person gupei = new person("谷沛",18);
		gupei.talk();
		
	}
	
}

这样就达到了初始化的目的。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/114847.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • RBF神经网络实验原理_神经网络多元拟合

    RBF神经网络实验原理_神经网络多元拟合RBF神经网络及拟合实例RBF神经网络介绍RBF神经网络结构RBF神经网络算法RBF神经网络逼近算法采用RBF神经网络逼近非线性函数神经网络逼近结果代码如下RBF神经网络介绍RBF神经网络结构径向基函数(RadialBasisFunction,RBF)神经网络是一种单隐含层的三层前馈神经网络,网络结构如下图所示RBF神经网络模拟了人脑中局部调整,相互覆盖接受域(或者说感受域,ReceptiveField)的神经网络结构。与BP神经网络相同,研究人员已经证明RBF神经网络能够以任何精度逼近任

    2025年6月1日
    3
  • node npm python 环境配置、安装

    node npm python 环境配置、安装node安装后,默认会自动配置环境变量,但是如果有时重装系统后,系统环境变量被重置,这时就需要重新手动配置环境变量。配置环境变量首先添加一个node的path,NODT_PATH值配置为node文件夹中的node_modules的位置,如D:\nodeJs\node_modules,然后在path中加入node安装文件夹的路径即可如D:\nodeJs。npm在出现如上系统重置问题,在工…

    2022年8月30日
    7
  • Oracle 函数 wm_concat 将列转行 用法 实例

    Oracle 函数 wm_concat 将列转行 用法 实例

    2021年8月31日
    85
  • Java开发人员必须掌握的Linux命令(一)

    子曰:“工欲善其事,必先利其器。“1、登录服务器SSH命令简单说,SSH是一种网络协议,用于计算机之间的加密登录。如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露。最基本的用法:常用格式:ssh [-l login_name] [-p port] [user@]hostname例子:ssh 192.168….

    2022年2月28日
    47
  • 安卓4.0/4.1/4.2手机怎么打开USB调试模式「建议收藏」

    安卓4.0/4.1/4.2手机怎么打开USB调试模式「建议收藏」提示:手机和电脑的连接方式都是ADB连接方式,所以手机上是必须打开USB调试才能正式连接和控制手机,根据安卓多个版本系统一共有3个开启USB调试模式方法。下面三个3个模式开启方法介绍::第一种模式是:

    2022年7月2日
    31
  • idea2021年最新永久激活码【在线注册码/序列号/破解码】

    idea2021年最新永久激活码【在线注册码/序列号/破解码】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月19日
    53

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号