韓順平 java 第五講第六講第七講 類與對象 成員方法 構造方法

兩隻貓:
貓1: 花色,1歲,叫小花
貓2:白色,2歲,叫小白
問:當輸入貓的名字時,輸出貓的顏色和歲數

當用過程式語言時候,會發現,變量很分散。
此時引入類:
可以提取一些共同的東西,比如提取貓類。

做一個類

class Cat{  //類名首字母大寫
    int age;
    String name;
    String color;
}

創建一個對象

Cat cat1 = new Cat();
cat1.age = 1;
cat1.name = "小花";
cat1.color = "花色";

-類是抽象的、概念的、代表一類事物,比如人類、貓類……
-對象是具體的,實際的,代表一個具體事物
-類是對象的模板,對象是類的一個個體,實例

對象賦值

Person a = new Person();
a.age = 10;
a.name = "Jone";
Person b;
b = a;
System.out.println(b.age);

會輸出:10
爲什麼麼??!!
Person a = new Person(); 執行之後,內存就會分配一片空間給a;a指向這個空間。
a.age = 10;
a.name = “Jone”; 這兩句就會在指定的地方賦值。
Person b; 這句僅僅是聲明瞭b這個變量,但是沒有new 空間。
b = a; b也指向a所指向的空間。

b.age = 9;

很自然地,這個也導致了a的age也是9;
因爲他們指向的是同一個空間。(類似於指針)

對象總是在內存中存在的
程序員使用類模板創建對象。(new 對象,然後存在內存中)
內存中能存多少對象,取決於內存的大小。
但是大小是有限的,所以要進行垃圾回收。java虛擬機自動回收。但是有時候也會發生內存泄露。

剛纔只是定義了一些變量,也就是成員變量,接下來介紹成員方法。

成員方法

class Person{
    int age;
    String name;

    public void speak(){
        System.out.println("I am a good man!");
    }
}

java 命名規範
方法名首字母小寫,類名首字母大寫。
myCry 或者 my_cry

訪問修飾符 返回類型 方法名 (參數列表){
    函數體;
}

構造方法(構造函數)

在創建對象的時候,可以初始化一些屬性。

構造方法特點

  1. 構造方法名和類名相同
  2. 沒有返回值
  3. 在創建一個新的對象的時候,系統會自動的調用該類的構造方法完成對新對象的初始化。
  4. 一個類可以有多個構造方法
  5. 每個類都有一個默認的構造方法(在你不寫構造方法的時候)
class Person{
    int age;
    String name;

    public Person(int age, String name){
        age = age;
        name = name;
    }
}

此時,創建的時候就需要指定值

Person p1 = new Person(1,"Jack");

其實,之前就有一個默認的構造方法。不含參數。系統自動生成的。你不寫的時候就會調用這個,當你寫一個的時候,就覆蓋了這個默認構造方法。

class Person{
    int age;
    String name;
    //默認構造方法
    public Person(){
    }   
    public Person(int age, String name){
        age = age;
        name = name;
    }
}

一個類可以有多個不同的構造方法。比如:

class Person{
    int age;
    String name;
    //默認構造方法
    public Person(){
    }   
    public Person(int age, String name){
        age = age;
        name = name;
    }
    public Person(String name){
        name = name;
    }
}

調用哪個構造方法取決於所給的參數匹配哪個。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章