1. 程式人生 > >面向物件概念、封裝之(private)、this

面向物件概念、封裝之(private)、this

1.什麼時候變數會有一個預設值
  (1)比如定義了一個汽車類,汽車類裡定義了顏色String color,車胎數量int number; new Car()後會給變數一個預設值,是可以輸出的。
   eg.
   public class Car {
String color;
int number;

public void run(){
System.out.println("車在跑"+color+number);
}


}
   測試類:
   public static void main(String[] args) {
Car c = new Car();
c.run();//輸出 車在跑null0
}


  (2)單純的在一個類裡定義了屬性,沒有初始化,不能輸出
   eg.
   int a ;
   System.out.println(a);


2.成員變數和區域性變數的區別:
  (1)定義位置上的區別
       成員變數,定義在類中,方法外
       區域性變數,方法內,語句中
  (2)作用域不同
       成員變數,作用範圍是整個類
       區域性變數,作用範圍方法內,語句中
  (3)預設值不同
       成員變數,有自己的預設值
       區域性變數,沒有預設值,不賦值不能使用
  (4)記憶體位置不同
       成員變數:跟隨物件進入堆記憶體儲存
       區域性變數:跟隨自己的方法,進入棧記憶體


3。為了提高安全性,一般會給成員變數設定成private,然後提供公共的訪問方式:方法。
   比如:public class Person{
      private String name;
      private int age;


      public int getAge(){
          return this.age;   
     }
   }


4.成員變數和區域性變數名重名問題
  注意:在區域性變數的方法裡,引用成員變數要用this.成員變數
  public class Person{
      String name = "成員變數";
      int age = 20;


      public void speak(){
      String name = "區域性變數";
      int age = 10;
      System.out.println("人在說話"+name + age);//輸出:人在說話成員變數20
      System.out.println("人在說話"+name + age);//輸出:人在說話區域性變數10 !!!
    }
  
  }