1. 程式人生 > 其它 >Java筆記——類和物件

Java筆記——類和物件

技術標籤:Java筆記java

類和物件

  1. 類的定義
class Student{
	public String sno;  //成員屬性
	public String name;
	public String sex;
	
	public void learn() {  //成員方法
		System.out.println("學習");
	}
	public void sleep() {
		System.out.println("睡覺");
	}
}
  • class為定義類的關鍵字;
  • Student 為類名;
  • { … } 中為類的主體。
  1. 類的例項化
    拿上述的Student例子來看:
public class Main{
public static void main(String[] args) {
		Student stu = new Student();
		stu.learn();
		stu.sleep();
		Student stu1 = new Student();
		Student stu2 = new Student();
	}
}

結果:
在這裡插入圖片描述

從示例可以看出:

  • new關鍵字用於建立一個物件的例項
  • 用 “ . ” 來訪問物件中的屬性和方法
  • 同一個類可以建立多個例項
  1. 方法
    對於上述Student來說,learn是一個方法,表示Student 這個物件具有“學習”的行為;
    同樣,sleep也是一個方法,代表Student物件具有“睡覺”的行為。

構造方法

在例項化物件的時候揮別自動呼叫到的方法,方法名字和類名相同,用於物件的初始化。

class Student{
	public String sno;  //成員屬性
	public String name;
	public String sex;
	
	    Student(String sno,String name, String sex){  //構造方法
        this.sno = sno;
        this.name = name;
        this.sex = sex;
    }
} public class Main{ public static void main(String[] args) { Student stu = new Student("2021","小紅","女"); System.out.println(stu.name); } }

結果:
在這裡插入圖片描述

static關鍵字

  • 修飾屬性
    java靜態屬性和類相關,和具體的例項無關,即同一個類的不同例項公用同一個靜態屬性。

程式碼示例:

class Test{
	public int a;
	public static int count;
}

public class Main{
	public static void main(String[] args) {
	Test t1 = new Test();
	t1.a++;
	Test.count++;
	System.out.println(t1.a);
	System.out.println(Test.count);
	}
}

結果:
在這裡插入圖片描述
由上述示例可知,count被static所修飾,所有類共享,且不屬於物件,訪問方式為:類名.屬性

  • 修飾方法
    在任何方法上應用static關鍵字,稱為靜態方法

  • 程式碼塊
    使用{ }定義的一段程式碼
    可分為:

普通程式碼塊

public class Main{
    public static void main(String[] args) {
		//普通程式碼塊
        {
            int x = 1;
            System.out.println("x1 = " + x);
        }
        
        int x = 100;
        System.out.println("x2 = " + x);
    }
}

結果:
在這裡插入圖片描述

構造塊

class Student{
    public String sno;  //成員屬性
    public String name;
    public String sex;

    Student(){
        System.out.println("i am a student");
    }

    //例項程式碼塊
    {
        this.sno = "20210201";
        this.name = "張三";
        this.sex = "男";
    }
    public void show(){
        System.out.println("sno:" + sno + " name: " + name + " sex: " + sex);
    }
}

public class Main{
    public static void main(String[] args) {
        Student stu = new Student();
        stu.show();

    }
}

結果:
在這裡插入圖片描述

靜態塊

class Student{
    public String sno;  //成員屬性
    public String name;
    public String sex;

    Student(){
        System.out.println("i am a student");
    }
    
    //靜態程式碼塊
    static {
        System.out.println("i am learning");
    }
}

public class Main{
    public static void main(String[] args) {
        Student stu = new Student();
    }
}

結果:
在這裡插入圖片描述

同步程式碼塊

  • 修飾類
  1. this指標
  • this引用的型別:對應類型別引用,即那個物件呼叫就是那個物件的引用型別
  • this引用只能在"成員方法中使用"
  • this引用具有final屬性,在一個成員方法中,不能再去引用其他的物件
  • this引用是成員方法第一個隱藏的引數,編譯器會自動傳遞,在成員方法執行時,編譯器會負責將
    呼叫成員方法物件的引用傳遞給該成員方法,this引用複雜來接收
  • 在成員函式中,所有成員變數的訪問,都會被編譯器修改通過this來訪問

示例:通過this呼叫自身的構造方法

class Student{
    public String sno;  //成員屬性
    public String name;
    public String sex;

    Student(String sno,String name, String sex){
        this.sno = sno;
        this.name = name;
        this.sex = sex;
    }
    public void show(){
        System.out.println(this.name+"的學號是"+this.sno);
    }
}

public class Main{
    public static void main(String[] args) {
        Student stu = new Student("2021","小紅","女");
        stu.show();
    }
}

結果:
在這裡插入圖片描述