一、描述
- 類是一種抽象的資料型別,它是對某一類事物整體的描述或定義,但是并不能代表某一個具體的事物,
- 例如,我們生活中所說的詞語:動物、植物、手機、電腦等等,這些也都是抽象的概念,而不是指的某一個 具體的東西,
二、類與物件的關系
- 從認識論角度考慮是先有物件后有類,物件,是具體的事物,類,是對物件的抽象,
- 從代碼運行角度考慮是先有類后有物件,類是物件的模板,
- 例如Person類、Pet類、Car類等,這些類都是用來描述或定義某一類具體的事物應該具備的特點和行為,而物件是抽象概念的具體實體,例如張三就是人的一個具體實體,
- 在java中,沒有類就沒有物件,然而類又是根據具體的功能需求,進行實際的分析,最終抽象出來的,
示例:
/*
張三是參考型別變數,它指向一個Person物件,這個Person物件就是Person類的一個具體實體,
能夠使用的是具體實體,而不是類,
類只是給物件的創建提供了一個參考的模板而已,
*/
Person zhangSan = new Person("張三", 20, "China");
三、'this'關鍵字
Ⅰ、'this'在類中的作用
-
區別成員變數和區域變數
public class Student { private String name; public void setName(String name) { /* this.name表示類中的屬性,name表示形式引數 */ this.name = name; } } -
呼叫類中的其他方法
public class Student { private String name; public void setName(String name) { this.name = name; } public void print() { /* 表示呼叫當前類中的setName方法, 默認情況下,setName("tom")和this.setName("tom")的效果是一樣的, */ this.setName("tom"); } } -
呼叫類中的其他構造器
public class Student { private String name; public Student() { /* 呼叫一個引數的構造器,并且引數的型別是String, 注意: this這種呼叫類中其他構造器的用法,只能在構造器中使用,普通的方法是不能用的, 并且這種呼叫的代碼只能出現在構造器中的第一句, */ this("tom"); } public Student(String name) { this.name = name; } }
Ⅱ、'this'在類中的意義
- 'this'關鍵字在類中代表該類將來創建出的物件,
- 'this'關鍵字是在物件的內部來參考物件本身,所以'this'可以呼叫成員變數和成員方法,
- 同一個類的不同物件都有一個屬于自己的'this',
示例:
/*
this和person列印的結果是一樣的,
那么其實也就是變數person是從物件的外部來參考物件,而this是在物件的內部來參考物件本身,
*/
public class Person {
private String name;
public Person() {
System.out.println("this = " + this);//this = com.conyoo.text.Person@5674cd4d
}
public static void main(String[] args) {
Person person = new Person();
System.out.println("person = " + person);//person = com.conyoo.text.Person@5674cd4d
}
}
四、物件
Ⅰ、物件和參考的關系
- 使用型別別、陣列型別、介面型別宣告出的變數,都可以指向物件,這種變數就是參考型別變數,簡稱參考,
- 參考'指向'物件,本質為參考保存了物件的地址值,
- 在程式中,創建出物件后,直接使用并不方便,所以一般會用一個參考型別的變數去接收這個物件,這個就是所說的參考指向物件,
- 物件和參考的關系,就如電視機和遙控器,風箏和線的關系一樣,
Ⅱ、使用'new'創建與初始化物件
- 使用'new'關鍵字創建與初始化物件的時候,除了分配記憶體空間之外,還會給創建好的物件進行默認的初始化,以及對類中構造器的呼叫,
示例:
/*
使用'new'關鍵字創建與初始化物件時程式內部執行的步驟:
1.為物件分配記憶體空間,將物件的實體變數自動初始化為默認值,
2.如果代碼中實體變數有顯式賦值,那么就將之前的默認值覆寫掉,
3.呼叫類中對應的構造器,
4.把物件記憶體地址值賦值給宣告的變數,
*/
Person person = new Person();
五、構造器
Ⅰ、簡介
- 類中的構造器也稱為構造方法,在進行物件創建的時候必須要呼叫,
特點:
- 構造方法名必須和類的名字相同,
- 構造方法沒有回傳型別,也不能寫void,
作用:
- 使用'new'關鍵字創建物件的時候必須使用類的構造器,
- 構造器中的代碼可以給物件中的屬性進行初始化賦值,
示例:
public class Person {
private String name;
public Person() {
name = "張三";
}
}
Ⅱ、構造器多載
- 除了無參構造器之外,很多時候我們還會使用有參構造器,在創建物件時候可以給屬性賦值,
示例:
public class Person {
private String name;
public Person() {
name = "張三";
}
public Person(String name) {
this.name = name;
}
}
Ⅲ、構造器間的呼叫
- 使用'this'關鍵字,在一個構造器中,可以呼叫同一個類中另一個構造器的代碼,
- 'this'的這種用法不會產生新的物件,只是呼叫了構造器中的代碼而已,一般情況下只有使用'new'關鍵字才會創建新物件,
示例:
public class Person {
private String name;
private Integer age;
public Person() {
this.name = "張三";
this.age = 20;
}
public Person(String name) {
this();
this.name = name;
}
}
Ⅳ、默認構造器
- 在java中,如果我們在撰寫類的時候沒有寫構造器,那么java檔案在編譯之后也會自動的添加一個無參構造器,這個無參構造器也被稱為默認的構造器,
注意:
- 如果我們手動地撰寫了一個構造器,那么編譯后就不會自動添加任何構造器了,
六、屬性
-
屬性,或者叫成員變數,用于定義該類或該類物件包含的資料,
-
屬性作用范圍是整個類體,
-
在定義屬性時可以對其初始化,如果不對其初始化,Java使用默認的值對其初始化,
屬性定義的格式:
/* 修飾符 */ 屬性型別 屬性名 /* = 初始值 */;
屬性呼叫的格式:
- 物件或物件的參考.屬性名
七、方法
- 方法是類和物件動態行為特征的抽象,
- 方法很類似于面向程序中的函式,
- 面向程序中,函式是最基本單位,整個程式由一個個函式呼叫組成,
- 面向物件中,整個程式的基本單位是類,方法是從屬于類或物件的,
方法定義的格式:
/* 修飾符 */ /* 回傳值型別 */ 方法名 (/* 引數串列 */) /* 例外拋出型別 */{
/* 方法體 */
/* return陳述句 */
}
物件呼叫的格式:
- 物件或物件的參考.方法名(引數串列)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/227225.html
標籤:Java
上一篇:Java基本概念:面向物件
