Java——三大特性之一:封裝

概念: 

在OOP中,封裝(encapsulation)是指對於某個對象,Java隱藏對象的屬性和實現細節,僅對外公開接口,控制在程序中屬性的讀取和修改的訪問級別。

封裝可以被認爲是一個保護屏障,防止該類的代碼和數據被外部類定義的代碼隨機訪問。

要訪問該類的代碼和數據,必須通過嚴格的接口控制。

封裝最主要的功能在於我們能修改自己的實現代碼,而不用修改那些調用我們代碼的程序片段。

適當的封裝可以讓程式碼更容易理解與維護,也加強了程式碼的安全性。

而封裝的優點則有以下幾點:

①良好的封裝能夠減少耦合。

②類內部的結構可以自由修改。

③可以對成員變量進行更精確的控制。

④隱藏信息,實現細節。

對於想要實現的操作,一個類已經將其封裝好,你只需調用方法即可,這正是OOP中的精髓。
通過封裝使一部分成員充當類與外部的接口,而將其他的成員隱藏起來,這樣就達到了對成員訪問權限的合理控制,使不同類之間的相互影響減少到最低限度,進而增強數據的安全性和簡化程序的編寫工作。

我們還是舉兩個例子來更好的理解封裝這個概念!!!👇👇👇

The first example:

import java.util.*;
class Member
{
	public String name;//公共屬性name
	public int salary;//公共屬性salary
        private String sex;//私有屬性sex
	public void setSex(String sex)//定義一個公共的方法來設置sex屬性
	{
		this.sex=sex;
	}
	public String getSex()//定義一個公共的方法來獲取sex屬性
	{
		return this.sex;
	}
        public void setHobby(String hobby)//定義一個公共的方法來設置hobby屬性
	{
		this.hobby=hobby;
	}
	public String getHobby()//定義一個公共的方法來獲取hobby屬性
	{
		return this.hobby;
	}
	public void talk()//定義一個公共的方法talk
	{
		System.out.println(name+"聊得非常開心!");
	}
}
public class Demo
{
	public static void main(String[] args)
	{
		Member m=new Member();
		m.name="小紅";//對公共屬性name直接賦值
                m.salary=5000;//對公共屬性salary也可以直接賦值
		m.setSex("女");//對私有屬性操作,要通過get來訪問、set來更改的方法
		m.setHobby("逛街");//同上
		System.out.println("姓名:"+m.name+",性別:"+m.getSex()
				   +",薪水:"+m.salary+",愛好:"+m.getHobby()+"!");
		m.talk();//可以調用Member類中的公共方法talk
	}
}

運行結果如下: 

上面這段代碼,我們舉例一個相對簡單的例子,通過註釋可以看到,這就實現了封裝,對於公共屬性name和salary,我們可以直接對其賦值;但是對於私有屬性sex和hobby,我們需要通過使用set方法來爲其賦值,再通過get方法來獲取其值。

俗話說,概念理解的再多再準確,也不如寫一段代碼熟悉的更快!下面我們再舉一個和上面類似的例子吧!!!👇👇👇

The second example:

import java.util.*;
class Young
{
	private String name;
	private int age;
	private String major;
	public void setName(String name)
	{
		this.name=name;
	}
	public void setAge(int age)
	{
		this.age=age;
	}
	public void setMajor(String major)
	{
		this.major=major;
	}
	public String getName()
	{
		return this.name;
	}
	public int getAge()
	{
		return this.age;
	}
	public String getMajor()
	{
		return this.major;
	}
}
public class Forever
{
	public static void main(String[] args)
	{
		Young member=new Young();
		member.setName("張三");
		member.setAge(20);
		member.setMajor("計算機科學與技術");
		System.out.println("學生姓名:"+member.getName()+
				  ",年齡:"+member.getAge()+
				  ",專業:"+member.getMajor()+"!");
	}
}

運行結果如下: 

這個例子和第一個差不多,大家可以去理解一下,如有問題,可以評論或者私信!!!

那麼,以上就是博主對Java三大特性之一——封裝的理解!!!

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章