java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Java封装性

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

作者: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;
	}

总结

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

您可能感兴趣的文章:
阅读全文