封裝的概念是什么?
封裝,即隱藏對象的屬性和實現細節,僅對外公開接口,控制在程序中屬性的讀和修改的訪問級別;將抽象得到的數據和行為(或功能)相結合,形成一個有機的整體,也就是將數據與操作數據的源代碼進行有機的結合,形成“類”,其中數據和函數都是類的成員。
1、封裝的作用
面向對象的封裝性的主要作用是解決程序的可擴展性。可以在不影響其他部分的情況下修改或者被封裝的部分達到對整個程序的擴展。
2、怎么樣去封裝
一般使用類進行封裝,在類中將屬性用private修飾,使這些屬性對其他類不可見。例:
class Person{
private String name;
private int age;
public void tell(){
System.out.println("姓名:"+name+" 年齡:"+age);
}
}
這些屬性在類內部被訪問時,需要使用this關鍵字。對屬性進行封裝后,其他類就無法訪問這些屬性。所以需要實現該屬性的get和set方法,使得它們能被外部訪問。
public void setName(String name){
this.name = name; //使用this關鍵字進行訪問
}
public String getName(){
return name;
}
那么這種set/get方法是不是破壞了封裝性呢?
不是。set/get方法是封裝性的一種體現。將屬性私有化,提供公有方法來訪問和設置屬性,并且可以在get和set方法中設置條件來達到控制屬性的目的,防止屬性被賦予一些非法值。
在設置了set/get方法后,類中的方法也要通過調用set/get方法來設置/得到屬性值。
public void tell(){
System.out.println("姓名:"+getName()+“年齡:”+getAge());
}