Java入門 第二季第一章 類和對象

版權聲明:本文爲博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/smilewsw/article/details/51131940
這是我學習慕課網Java課程的筆記,原視頻鏈接爲:http://www.imooc.com/learn/124

1-1 什麼是類和對象

●對象的概念      
        萬物皆對象,客觀存在的事物即對象。
●什麼是面向對象  
        關注對象的事物信息,例如買手機()時,想要屏幕大,CPU快、內存大(屬性)、能用電話短信(方法)的。店員拿來三星(對象實體)。

        類是模子,確定對象將會擁有的特徵(屬性)和行爲(方法
        類的特點:類是對象的類型
                         具有相同屬性和方法的一組對象的集合
對象的屬性
        屬性——對象具有的各個特徵。 例如:手機——屏幕、cpu、內存
        每個對象的每個屬性都擁有特定值
對象的方法
        方法——對象執行的操作。例如:手機——打電話、發短信
類與對象的關係/區別
        類是抽象的概念,僅僅是模板,比如說“手機”
        對象是一個你能夠看得到、摸得着的具體實體
 
                                                                            圖1-1-1 類的組成結構示例


1-2 如何定義 Java中的類

類的重要性
      所有Java程序都以類 class 爲組織單元
什麼是類? 
        類是模子,確定對象將會擁有的特徵(屬性)和行爲(方法)
類的組成
        屬性和方法
定義一個類的步驟
        a.定義類名
        b.編寫類的屬性
        c.編寫類的方法

                                                    圖1-2-1 定義一個類


1-3 如何定義 Java中的對象

使用對象的步驟
    ●創建對象
           類名 對象名 = new 類名( );
           Telphone phone = new Telphone();

                                                           圖1-3-1 創建對象


其實是以代碼形式保存在文件當中,當我們把文件的信息放到內存當中,此時這些信息的集合稱爲對象
new 類名()其實就是 對一個類進行實例化

   使用對象
          引用對象的屬性:對象名.屬性               phone.screen =5;  //給screen屬性賦值5
          引用對象的方法:對象名.方法名()     phone.sendMessage(); //發送短信

1-4 Java 中的成員變量和局部變量

成員變量——在類中定義,用來描述對象將要有什麼。
局部變量——在類的方法中定義,在方法中臨時保存數據

                                                  圖1-4-1 成員變量和局部變量


▲成員變量和局部變量的區別
作用域不同
        局部變量的作用域僅限於定義它的方法
        成員變量的作用域在整個類中是可見的
初始值不同
        Java會給成員變量一個初始值
        Java不會給局部變量賦予初始值
重名現象
        在同一個方法中,不允許有同名的局部變量
        在不同的方法中,可以有同名局部變量
就近原則
        兩類變量同名時,局部變量具有更高的優先級

                                                        圖1-4-2 作用域錯誤使用


                                                        圖1-4-3 就近原則示例


1-5 Java 中的構造方法

1.使用 new+構造方法 創建一個新的對象
        Telphone phone = new Telphone();   //Telphone()其實是構造方法
2.構造方法是定義在Java類中的一個用來初始化對象的方法
    構造方法與類同名且沒有返回值

                                                   圖1-5-1 構造方法的語句格式


3.無參構造方法的使用:
main():
        Telphone phone = new Telphone();
class Telphone:
        public Telphone{
                System.out.println("Telphone構造方法執行了");
        }
4.有參構造方法的使用:
main():
        Telphone phone2 = new Telphone(4.0f, 2.0f, 2.0f);
class Telphone:
        public Telphone(float newScreen, float newCpu, float newMem){
                screen = newScreen;
                cpu = newCpu;
                mem = newMem;
        }
5.當沒有指定構造方法時,系統會自動添加無參的構造方法
6.當有指定構造方法,無論是有參、無參的構造方法,都不會自動添加無參的構造方法
7.構造方法的重載:方法名相同,但參數不同的多個方法,調用時會自動根據不同的參數選擇相應的方法
8.構造方法不但可以給對象的屬性賦值,還可以保證給對象的屬性賦一個合理的值

                            圖1-5-2 在構造函數內作合理化檢測


                                            圖1-5-3 創建類時可以勾選 帶main


1-6 Java 中的 static 使用之靜態變量

我們可以基於一個類創建多個該類的對象,每個對象都擁有自己的成員,相互獨立。
然而在某些時候,我們更希望該類所有的對象共享同一個成員。此時就是 static 大顯身手。

Java 中被 static 修飾的成員稱爲 靜態成員 或 類成員。它屬於整個類所有,而不是某個對象所有,即被類的所有對象所共享。靜態成員可以使用類名直接訪問,也可以使用對象名進行訪問。當然,鑑於它作用的特殊性,更推薦用類名訪問

使用 static 可以修飾變量、方法和代碼塊。 

例如,我們在類中定義了一個 靜態變量hobby,操作代碼如下所示:


運行結果:


要注意:靜態成員屬於整個類,當系統第一次使用該類時,就會爲其分配內存空間知道該類被卸載纔會進行資源回收。


1-7 Java 中的 static 使用之靜態方法

與靜態變量一樣,我們也可以使用 static 修飾方法,稱爲靜態方法 或 類方法。其實之前我們一直寫的 main 方法就是靜態方法。
靜態方法的使用如:

運行結果:


需要注意:
1.靜態方法中可以直接調用同類中的靜態成員,但不能直接調用非靜態成員。如:


如果希望在靜態方法中調用非靜態變量,可以通過創建類的對象,然後通過對象來訪問非靜態變量。如:


2.在普通成員方法中,則可以直接訪問同類的非靜態變量和靜態變量,如下所示:


3.靜態方法中不能直接調用非靜態方法,需要通過對象來訪問非靜態方法。如:


1-8 Java 中的 static 使用之靜態初始化塊

Java 中可以通過初始化塊進行數據賦值。如:


在類的聲明中,可以包含多個初始化塊,當創建類的實例時,就會依次執行這些代碼塊。如果使用 static 修飾初始化塊,就成爲靜態初始化塊

需要特別注意:靜態初始化塊只在類加載時執行,且只會執行一次,同時靜態初始化塊只能給靜態變量賦值,不能初始化普通的成員變量。

我們來看一段代碼:


運行結果:


通過輸出結果,我們可以看到,程序運行時靜態初始化最先被執行,然後執行普通初始化塊,最後才執行構造方法。由於靜態初始化塊只在類加載時執行一次,所以當再次創建對象 hello2 時並未執行靜態初始化塊。

                                圖1-8-1 進一步探究靜態初始化塊


運行結果:



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