天天看點

Java面向對象之靜态屬性靜态方法、通路權限、getter與setter

一、靜态

1、static靜态的特點

(1)資料共享

(2)屬于類的.并不屬于對象

(3)優先于對象産生的

2、優于對象産生(構造器解釋)

在程式執行時,是先建立靜态構造器,再建立通用構造器。

public class Test03{
  {
    System.out.println("---我是通用構造器---");
  }
  
  static{
    System.out.println("---我是靜态構造器---");
  }
  
  //建立構造方法
  public Test03(){
    System.out.println("------構造方法------");
  }
  //定義主方法
  public static void main(String[] args){
    new Test03();  //調用構造方法
  }
}      
Java面向對象之靜态屬性靜态方法、通路權限、getter與setter

3、靜态屬性或方法使用類名去通路(靜态方法也可直接調用)

public class Test03{
  static char level = 'D';  //定義靜态屬性
  {
    System.out.println("---我是通用構造器---");
  }
  
  //靜态方法會預設執行,不建立對象也會執行
  static{
    System.out.println("---我是靜态構造器---");
  }
  
  //建立構造方法
  public Test03(){
    System.out.println("------構造方法------");
  }
  public static void SStatic(){
    System.out.print("She is " + size + ' ');  //使用靜态屬性可以不用this
    System.out.println("------我是靜态方法------");
  }
  //定義主方法
  public static void main(String[] args){
    Test03.SStatic();  //使用類名通路靜态方法
    SStatic();  //直接通路靜态方法
  }
}      
Java面向對象之靜态屬性靜态方法、通路權限、getter與setter

二、通路權限

1、權限類别

public:公共的,所有成員都能通路

default:預設的,也稱包通路權限,在自己的包内才能通路,其他包内不能通路

private:私有的,在其他類中不能通路(包中可以有多個類)

2、練習

public class Test03{
  public String a = "public";   //公有變量
  String b = "default";  //預設變量
  private String c = "private";  //私有變量
  
  public static void main(String[] args){
    Test03 Te = new Test03();  //建立對象
    //主方法中通路三種類型的變量
    System.out.println(Te.a);
    System.out.println(Te.b); 
    System.out.println(Te.c);    
  }
}      
Java面向對象之靜态屬性靜态方法、通路權限、getter與setter

在其他包(檔案夾)中則無法通路到變量b,在其他類中無法通路到變量c。

我們平時用的最多的就是public和private。

三、getter與setter

  • 主方法類的内容:
public class Test03 {
  public static void main(String[] args){
    Test03_Person P = new Test03_Person();  //建立對象人
    
    //年齡的文法沒有問題。但是,邏輯上不對,年齡不可能是負數!
    // P.name = ”草帽路飛";  //給對象屬性指派
    // P.age = -1;
    
    //檢視這個人的名字和年齡
    P.setName("草帽路飛");  //給私有成員屬性指派
    P.setAge(-1);  //給私有成員屬性指派
    System.out.println(P.getName());  //擷取私有成員屬性
    System.out.println(P.getAge()); 
    P.act();
  }
}      
  • 對象人類的内容
public class Test03_Person{
  //成員安量是私有的
  private String name;
  private int age;
  
  //setter原型
  public void setName(String name){
    this.name = name;
  }
  //保證我們的成員變量是值是規範的
  public void setAge(int age){
    if (age<0){
      this.age = 0;
    }else{
      this.age = age;
    }
  }
  
  //getter原型
  public String getName(){
    return this.name;
  }
  public int getAge(){
    return this.age;
  }
  
  //定義人的行為方法
  public void act(){
    System.out.println("行為:" + this.age + "歲大的" + this.name + "正在散步~");
  }
  
}      
  • 結果
  • 2、getter與setter的調出方法

    在寫好屬性之後,空白處右擊,Generate,選Getter and Setter,就會自動生成以上getter與setter的原型架構,隻需要稍作修改就可以直接使用了。