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


相关推荐

  • redis+springboot_全集成厨房

    redis+springboot_全集成厨房一、Redis集成简介Redis是我们Java开发中,使用频次非常高的一个nosql数据库,数据以key-value键值对的形式存储在内存中。redis的常用使用场景,可以做缓存,分布式锁,自增序列等,使用redis的方式和我们使用数据库的方式差不多,首先我们要在自己的本机电脑或者服务器上安装一个redis的服务器,通过我们的java客户端在程序中进行集成,然后通过客户端完成对redis的增删改查操作。redis的Java客户端类型还是很多的,常见的有jedis,redission,lettuce等,

    2022年9月22日
    2
  • 世界各个地区WIFI 2.4G及5G信道一览表

    世界各个地区WIFI 2.4G及5G信道一览表世界各个地区WIFI2.4G及5G信道一览表

    2022年5月20日
    259
  • 数据结构 哈希表设计

    实验6哈希表设计一、实验目的熟练掌握哈希表的构造方法,深刻理解哈希表与其他结构表的实质性差别。 二、实验内容程序的功能是对一批关键字集合采用除留余数法和线性探测再散列的方法解决冲突来建立相应的哈希表和完成查找过程及平均查找长度的计算。【问题描述】    研究哈希(HAXI)表查找技术的两个重要问题是:构造HAXI函数和处理冲突。现在要求针对某个数据集合中的关键字设

    2022年4月9日
    54
  • 18.网页尺寸scrollHeight

    18.网页尺寸scrollHeight

    2021年9月4日
    50
  • 从K近邻算法、距离度量谈到KD树、SIFT+BBF算法

    从K近邻算法、距离度量谈到KD树、SIFT+BBF算法从K近邻算法、距离度量谈到KD树、SIFT+BBF算法前言前两日,在微博上说:“到今天为止,我至少亏欠了3篇文章待写:1、KD树;2、神经网络;3、编程艺术第28章。你看到,blog内的文章与你于别处所见的任何都不同。于是,等啊等,等一台电脑,只好等待..”。得益于田,借了我一台电脑(借他电脑的时候,我连表示感谢,他说“能找到工作全靠你的博客,这点儿小忙还说,不地道”,有的时候,稍许感受到

    2022年6月6日
    23
  • 软考之路(四)—软件project一 概念模型,逻辑模型,物理模型

    软考之路(四)—软件project一 概念模型,逻辑模型,物理模型

    2021年12月7日
    101

发表回复

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

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