Java面向對象核心知識(一)

Java面向對象核心知識(二)

目錄

一、對象和類的概念

二、成員變量初始化問題

三、如何在內存中區分類和對象

四、對象的創建和使用

五、類和類之間的幾種關係

六、構造方法(函數)

七、Java約定俗稱的命名規則:

八、方法重載(overload)

九、this關鍵字

十、static關鍵字(可用於計數)

十一、package和import語句(Eclipse和idea開發會自動生成)

十二、JDK中主要的包介紹

十三、打包成jar包

十四、Java權限修飾符

十五、繼承

補充:Java面向對象基本概念-引用



一、對象和類的概念

1.對象是Java程序的核心,在Java程序中“萬事萬物皆對象(必須首先定義類,你纔能有對象)。”

2.對象可以看成是靜態屬性(成員變量)和動態屬性(方法)的封裝體。

3.是用來創建同一類型的對象的“模板”,在一個類中定義了該類對象所應具有的成員變量以及方法。

4.J2SDK提供了很多類供編程人員使用,編程人員也可以定義自己的類。

5.成員變量等於屬性,方法等於函數。

6.補充:Java中的對象是通過引用對其操作的。

 

二、成員變量初始化問題

在定義成員變量時可以對其初始化,如果不對其初始化,Java使用默認的值對其初始化,成員變量的作用範圍爲整個類體。

 

三、如何在內存中區分類和對象

1.類是靜態的概念放在代碼區。

2.對象是new出來的,位於堆內存,類的每個成員變量在不同的對象中都有不同的值(除了靜態變量),而方法只有一份,執行的時候才佔用內存。

 

四、對象的創建和使用

1.必須使用new關鍵字創建對象

2.使用對象(引用).成員變量或引用對象的成員變量。

3.使用對象(引用).方法(參數列表)來調用對象的方法。

4.同一個類的每個對象有不同的成員變量存儲空間。

5.同一個類的每個對象共享該類的方法。

6.對象用計算機語言對問題域中事物的描述,對象通過“屬性”和“方法”來分別對應事物所具有的靜態屬性和動態屬性。

7.非靜態方法是針對每個對象進行調用(即調用非靜態方法是針對每個具體new出來的對象而言的)。

 

五、類和類之間的幾種關係

1.關聯關係:一個類的方法裏面是另一個類的具體的某一個對象(即某個方法的參數是一個類的對象),例如方法“教研究生”,而參數是一個對象研究生(這是一種最弱的關係)。

2.繼承關係(一般和特殊):××是一種××只要這句話能夠說通,就可以考慮用繼承關係來封裝,例如:游泳運動員是一種運動員。

3.聚合關係(整體和部分):××是××的一部分,如果這句話能說通,他們之間的關係就是聚合關係。其中聚合關係又分爲“聚集”和“組合”這兩種關係。

         

  (聚集關係:關係相對分散)           (組合關係:關係緊密,密不可分)

 

六、構造方法(函數)

1.使用new+構造方法創建一個新的對象。

2.構造方法是定義在Java類中的一個用來初始化的對象的函數。

3.構造方法與類同名且沒有返回值。

4.當沒有指定構造方法時,編譯器爲類自動添加形如類名(){}的無參構造方法。

補充:當一個方法調用完成之後,棧裏面爲它分配的所有空間全部消失。

 

七、Java約定俗稱的命名規則:

1.類名的首字母大寫。

2.變量名和方法名的首字母小寫。

3.運用駝峯標識(方法名和變量名等)。

 

八、方法重載(overload)

一個類中可以定義有相同的名字,但參數不同的多個方法。調用時會根據不同的參數來選擇對應的方法

所謂參數不同指的是:(1)參數個數不一樣

                                     (2)參數類型不一樣

只要這兩個方面有一個方面就行了。

注意:Java中方法重載和返回值和修飾符沒有任何關係。

 

九、this關鍵字

1.在類的方法定義中使用this關鍵字代表使用該方法的對象的引用。

2.當必須指出當前使用方法的對象是誰時要使用this關鍵字。

3.使用this可以處理方法中成員變量和參數重名的情況。

4.this可以看作是一個變量,它的值是當前對象的引用。

5.就近聲明原則:當你確定不了一個參數到底指哪一個變量時(確定不了一個變量到底指的是你聲明的哪一個變量的時候)找離他最近的聲明。

 

十、static關鍵字(可用於計數)

1.在類中,用static聲明的成員變量爲靜態成員變量,它爲該類的公用變量,在第一次使用時被初始化,對於該類的所有對象來說,static成員變量只有一份。

2.用static聲明的方法爲靜態方法,在調用該方法時,不會將對象的引用傳遞給它,所以在static方法中不可訪問非static的成員(靜態方法不再是針對某個對象調用,所以不能訪問非靜態成員)

3.可以通過對象引用或類名(不需要實例化)訪問靜態成員。

4.靜態方法可以訪問靜態方法,普通方法可以訪問靜態方法,靜態方法不能訪問普通方法或者屬性,普通方法可以訪問普通方法。普通方法是針對某個對象調用,靜態方法不針對某個對象調用。

:在成員變量前加上static關鍵字,main方法才能訪問。

 

十一、package和import語句(Eclipse和idea開發會自動生成)

1.爲便於管理大型軟件系統中數目衆多的類,解決命名衝突問題,Java引入包(package)機制,提供類的多重類命名空間。

2.package(包)的名字約定俗成的爲公司域名的倒寫

3.package語句作爲Java(源文件)的第一條語句,指明該文件中定義的類所在的包(若缺省該語句,則指定爲無名包)

包實則就是一個文件夾,它的格式爲:

package pkg1[pkg2][pkg3...]];

4.Java編譯器把包對應於文件系統的目錄管理,package語句中,用‘.’來指明包(目錄)的層次,例如:使用語句

package com.example;

則該文件中所有的類位於.\com\example目錄下

5.如果把一個類放到包(package)裏面,第一句寫package,package後面想跟多少層包就跟多少層包,但是有一點必須注意,你編譯出來的這個class文件必須位於正確的目錄(和包的層次要完全一致)下面。

6.如果你想讓在另一個類裏面用我們在這個包裏面的類,必須把名字寫全了或者導入該類所在的包,import ...

7.如果將一個類打包,則使用該類時,必須使用該類的全名(例如:com.example.MyClass),Java編譯器纔會找到該類,也可以使用import在文件的開頭引入要使用的類,例如:

import com.example.MyClass;
import java.util.*;

MyClass myClass = new MyClass();//可以直接使用類名

注意:可以不需要用import語句直接使用java.lang包中的類,因爲java已經默認爲你導入該包,不需要手動導入。

8.訪問位於同一個包中的類不需要引入。

9.class文件的最上層包的父目錄必須位於classpath下(eclipse和idea不用擔心這個問題)。

10.執行一個類需要寫全包名。

 

十二、JDK中主要的包介紹

1、java.lang--包含一些Java語言的核心類,如:String、Math、Integer、System和Thread,提供常用功能,java.lang不需要引入包,其他的包必須引入。

2.java.awt--包含了構成抽象窗口工具集(abstract window toolkits)的多個類,這些類被用來構建和管理應用程序的圖形用戶界面(GUI)

3.java.applet--包含applet運行所需的一些類。

4.java.net--包含執行的網絡相關的操作的類。

5.java.io--包含能提供多種輸入/輸出功能的類。

6.java.util--包含一些實用的工具類,如定義系統特性、使用與日期日曆相關的函數。

7.java.sql--數據庫包。

 

十三、打包成jar包

在命令DOS窗口下,使用命令jar -cvf test.jar *.*即可把當前目錄下的文件打包成jar包(類似於壓縮包),把包好的jar可以直接給他人使用。其中,*.*表示當前目錄,test.jar表示打包後的名稱。

 

十四、Java權限修飾符

 

訪問控制符

   類內部     同一個包 子類 所有類
               private             
              default                     
            protected                       
               public                          

1.Java權限修飾符public protected private置於類的成員變量前,用來限定其他對象對該類對象成員的訪問權限

2.對於外部class的權限修飾符只可以用public和default修飾符,因爲外部class上級目錄就是包,對應的訪問的權限就是public和default,而內部類四種權限修飾符都可以使用。

3.對於類修飾符而言,public類可以在項目的任何地方訪問,而default類(缺省)只可以被同一個包內部的類訪問,也就是常說的“包權限”,對於變量而言同理。

4.對四種權限修飾符的進一步解釋(結合上年表格理解):

private:Java語言中對訪問權限限制的最窄的修飾符,一般稱之爲“私有的”。被其修飾的類、屬性以及方法只能被該類的對象訪問。其子類不能訪問,更不允許跨包訪問。

default:即不加任何訪問修飾符,通常稱爲“默認訪問模式”。被其修飾的類、屬性以及方法,只允許在同一包中進行訪問(包訪問權限)。

protected:介於public和private之間的一種訪問修飾符,一般稱之爲“保護型”。被其修飾的類、屬以及方法只能被類本身的方法及子類訪問,即使子類在不同的包中也可以訪問。

public:Java語言中訪問限制最寬的修飾符,一般稱之爲“公共的”。被其修飾的類、屬性和方法不僅可以跨類訪問,而且允許跨包訪問。

 

十五、繼承

Java中使用extends關鍵字實現類的繼承機制,其語法規則爲:

<modifier> class 類名 [extends 父類]  [implements 接口]{

         ...

    }

通過繼承,子類自動擁有父類的所有成員變量和方法,Java只支持單繼承,不允許多繼承。一個子類只能有一個父類,一個父類可以有多個子類。

1.子類比父類“大”,子類對象包含一個父類對象。

2.子類可以從父類那裏繼承了所有成員變量及方法,包括前面帶有private修飾符的也被繼承了下來,但這時子類只有訪問權沒有修改權,也就是隻能讀不能改。

3.所有修飾符都可以修飾成員變量、成員方法以及構造方法。

4.爲了代碼安全起見,修飾符儘量不要使用權限大的,適用即可。比如成員變量,如果沒有特殊需要,儘可能用private。

5.修飾符修飾的是“被訪問”的權限。

 

補充:Java面向對象基本概念-引用

1.Java語言中除基本數據類型外的變量類型都稱之爲引用類型。

2.基本數據類型佔用一塊內存,引用類型佔用兩塊內存。

3.Java中的對象是通過引用對其操作的。

4.集成方式包括單一繼承和多重集成,但是Java只支持單一繼承,但是可以實現多個接口。

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