Java筆記——類和物件
阿新 • • 發佈:2021-01-20
類和物件
- 類的定義
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 為類名;
- { … } 中為類的主體。
- 類的例項化
拿上述的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關鍵字用於建立一個物件的例項
- 用 “ . ” 來訪問物件中的屬性和方法
- 同一個類可以建立多個例項
- 方法
對於上述Student來說,learn是一個方法,表示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();
}
}
結果:
同步程式碼塊
- 修飾類
- 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();
}
}
結果: