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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 使用ARP命令[通俗易懂]

    使用ARP命令[通俗易懂]讲解ARPCache更新过程,并分析对应请求报文以及响应报文的内容。1.建立网络拓扑2.填写4个主机的ip地址和子网掩码3.分别对主机pc0和pc1的命令行中输入“arp-a”命令查看其ARP高速缓存,发现无任何缓存信息。4.切换到simulation模式,pc0和pc1的ip分别为源地址和目的地址5.创建一个简单的PDU6.可以发现pc0和pc1之间成功进行了一次传输,即pc0得到了pc1的ip地址和MAC地址7.可以看出pc0发送了一个广播报文8.pc1得到响应

    2022年10月31日
    0
  • Idea激活码最新教程2023.2版本,永久有效激活码,亲测可用,记得收藏

    Idea激活码最新教程2023.2版本,永久有效激活码,亲测可用,记得收藏Idea 激活码教程永久有效 2023 2 激活码教程 Windows 版永久激活 持续更新 Idea 激活码 2023 2 成功激活

    2025年5月26日
    0
  • python pandas fillna_python rfind函数

    python pandas fillna_python rfind函数本文概述我们可以使用fillna()函数填充数据集中的空值。句法DataFrame.fillna(value=None,method=None,axis=None,inplace=False,limit=None,downcast=None,**kwargs)参数值:它是一个用于填充空值的值,或者是一个Series/dict/DataFrame。method:一种用于填充重新…

    2022年8月12日
    2
  • 用状态空间法求猴子香蕉问题_猴子摘香蕉状态空间图

    用状态空间法求猴子香蕉问题_猴子摘香蕉状态空间图猴子和香蕉问题(monkeyandbananaproblem)在一个房间内有一只猴子(可把这只猴子看做一个机器人)、一个箱子和一束香蕉。香蕉挂在天花板下方,但猴子的高度不足以碰到它。那么这只猴子怎样才能摘到香蕉呢?图2.1.1表示出猴子、香蕉和箱子在房间内的相对位置。用一个四元表列(W,x,Y,z)来表示这个问题的状态,其中W-猴子的水平位置x-当猴子在箱子顶上时取x=1;否则取x=0Y-箱…

    2022年9月26日
    0
  • 并发、并行、异步、同步、单进程、多进程、多线程…

    并发、并行、异步、同步、单进程、多进程、多线程…

    2021年10月10日
    47
  • 如何设置电信光猫?图解手把手教你(超级详细)「建议收藏」

    如何设置电信光猫?图解手把手教你(超级详细)「建议收藏」自从电信升级成光纤之后,光猫经常有点小问题的,如果电信说帮你设置好漫天要价的话,求人还不如求自己,或者电信送的光猫坏了,买他们的超贵,自己买一个又好又便宜的自己设置就的了注意:2016年以后,电信为

    2022年8月3日
    3

发表回复

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

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