Java_02【面向对象封装】

面向对象—封装

01封装的定义

指一种将抽象性函式接口的实现细节部份包装、隐藏起来的方法。封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。
封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。
适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。
个人理解:目前来看 封装最常用在定义类的属性上 通过给属性进行封装达到保护属性的目的,在进行修改属性的同时避免修改其他代码块产生BUG。

02封装的优点

1.好的封装可以减少耦合。
耦合度(Coupling)是对模块间关联程度的度量,。
模块间的耦合度是指模块之间的依赖关系,包括控制关系、调用关系、数据传递关系。模块间联系越多,其耦合性越强,同时表明其独立性越差。降低模块间的耦合度能减少业务改动引起模块间的影响
2.类的结构可以自由修改
3.可以对成员变量进行共精确的控制
3. 可以对成员变量进行更精确的控制。
4. 隐藏信息,实现细节。

03如何实现封装

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

这里是一个简单的案例 主要是用来展示一个类属性的封装
封装的过程体现在三部
第一步 对属性的私有化 private 将一个属性私有化除了本类其他类对象无权访问,达到保护数据的目的
第二步 提供seter方法 提供一个外部数据进入的方法 使用this关键字区别本类与外部参数的区别
第三步 提供getter方法 提供一个本类属性出去使用的方法。

04个人解读

封装的使用提高了代码的可读,与减轻我们的工作量,倘若没有封装 在存放数据与使用数据的时候会出现极大地问题,就不得不修改类的客服代码这样违反了编码标准,而且难以实现对成员变量的精准控制

05This 关键字

上文提到this 关键字那么我们就着重的来学习this关键字
this关键字 简单的来说this 指的是当前对象 何为当前对象? 当一个this 存在于一个方法中 这个方法没有被任何对象调用时 就没有当前方法 此时this 不指向任何,当有方法调用时 就指向当前方法
1。this关键字可以表示当前对象

class Person{
	public void print(){
		System.out.println("Person print 打印当前对象"+this);
		}
	}
	public class Test{
		public void print(){
		System.out.println("Test print 打印当前对象"+this);
		}
		public static void main(String[] atgs){
		System.out.println("Person this 测试 p1");
		Person p1 = new Person();
		p1.print();
		System.out.println("Person this 测试 p2");
		Person p2 = new Person();
		p2.print(); 
		System.out.println("Test this 测试 t1");
		Test t1 = new Test();
		t1.print();
		System.out.println("Test this 测试 t1");
		Test t2 = new Test();
		t2.print(); 
	}
}

在这里插入图片描述
这个例子 说明 this 指向当前创建的对象 那个对象调用那个对象就是this 所以4次打印的地址都不相同

class Person{
	public void print(){
		System.out.println("Person print 打印当前对象"+this);
		}
}
	public class Test{
		Person.print1();
	}
}

在这里插入图片描述
证明 当没有对象调用this 时 this也无任何指向
2。this可以调用本类方法
当理解this可以表示当前对象时 这个就更容易理解 本类非静态方法必须使用对象调用 但是this恰好可以表示当前对象所以省去了在类中创建对象调用的过程
当不使用this 调用当前类中的其他方法

	public class Test{
		public Test getObj(){
			return new Test();
		}
		public void print_test(){
			getObj.print_this();
		}
		public void print_this(){
			System.out.println("Test 不使用this 调用 测试");
		}
		public static void main(String[] atgs){
			Test test = new Test();
		test.print_test();
	}
}

若想在一个方法中调用其他方法 就得在类中传建一个对象 去调用
使用this

	public class Test{
		public void print_test(){
			this.print_this();
		}
		public void print_this(){
			System.out.println("Test 不使用this 调用 测试");
		}
		public static void main(String[] atgs){
			Test test = new Test();
		test.print_test();
	}
}

提高了代码的可读性 最重要的是避免了 产生问题 缩小工作量
3。this 调用本类属性
对比两代码

class A{
private String name;
public void setName(String name){
	name = name;       
	}
}

class A{
private String name;
public void setName(String name){
	this.name = name;       
	}
}

第一段代码不但可读性差 而且不能达到我们的要求 无法正常使用即使编译能够通过
第二段代码就是用this去调用当前类的属性.

生命不息,奋斗不止!!!

猜你喜欢

转载自blog.csdn.net/qq_36390039/article/details/88579731