java學習(八)面向對象特徵之封裝和調用
封裝:是面向對象的三大特徵之一,作用有兩個
-
保證內部結構安全
-
屏蔽複雜,暴露簡單
封裝從代碼級別來看有啥用?
-
對於代碼調用的人來說,不需要關心代碼的複雜實現,只需要通過簡單的入口就可以訪問了
-
在類體裏的重要數據可以封裝起來,讓外部人員不能隨意訪問,保證數據安全性
複習一下方法的定義
【修飾符列表】返回值類型 方法名(參數列表){}
修飾符列表一般爲public static,但是也有不帶static的實例方法(對象方法)
有static的方法和沒有static的方法怎麼調用?
-
有static的方法是靜態方法,使用類名.方法名();調用即可, 如果在當前類中,類名也可以省略直接:方法名();
-
沒有static的方法稱爲實例方法,就是對象級別的方法。需要先new對象然後引用.方法();
-
就是實例對象、實例方法調用都需要new對象去調用
代碼
public class MethodTest{
public static void main(String[] args){
//類名.方法名();調用
MethodTest.doSome();
//省略類名直接調用
doSome();
MethodTest m1 = new MethodTest();
//引用.方法名();纔可以調用無static的方法
m1.doOther();
}
//定義一個有static的方法
public static void doSome(){
System.out.println("doSome執行");
}
//定義一個無static的方法
public void doOther(){
System.out.println("doOther執行");
}
}
怎麼封裝?
-
私有化 private關鍵字
-
private關鍵字聲明後,變量只能在當前類調用
-
-
提供對外開放的入口
封裝get和set方法讀取和修改
-
這樣的方法定義的時候不能使用 static 關鍵字修飾,被稱爲實例方法 :set 和 get 方法訪問的都是某個具體對象的屬性, 不同的對象調用 get 方法獲取的屬性值不同,所以 set 和 get 方法必須有對象的存在才能調用。
-
對象級別的 方法,不能直接採用“類名”調用,必須先創建對象,再通過“引用”去訪問。
-
get方法要求:public 返回值類型 get + 屬性名首字母大寫(){
return;
}
-
set 方法規範中要求是 public void set + 屬性名首字母大寫(一個參數){
xxx = 一個參數;
}
public class Person{
//封裝,提供一個get和一個set接口
private int age;
//get方法
public int getAge(){
return age;
}
//set方法
public void setAge(int nianLing){
if (nianLing<0 ||nianLing>150){
System.out.println("您輸入的年齡值不合法!請您重新賦值");
return; //只要有return語句執行,當前所在方法就結束
}
System.out.println("年齡合法纔會執行這裏------------------------------");
age = nianLing;
}
}
調用
public class PersonTest02{
public static void main(String[] args){
Person p1 = new Person();
//int nianLing = p1.getAge();
//System.out.println(nianLing); //0
p1.setAge(188);
//System.out.println(p1.getAge()); //0
p1.setAge(18);
//System.out.println(p1.getAge()); //18
p1.setAge(108);
//System.out.println(p1.getAge()); //108
//注:如果setAge時,傳的變量不符合要求,return;執行,整個方法會結束。【該方法】後面的代碼就執行不到
}
}