*****--------------面向對象課程大綱-----------*****
面向對象概述
類
類的構造方法
靜態變量、常量和方法
類的主方法
對象
類的繼承
object類
對象類型的轉換
使用instanceof操作符判斷
方法的重載
多態
抽象類與接口
Java類包
final
內部類
異常概述
處理程序異常錯誤
Java常見異常
自定義異常
在方法中拋出異常
運行時異常
異常的使用原則
======================================================================
<一>面向對象概述
概述:現實世界中所有的事物都是對象,對象都具有某些特徵,並展現某些行爲
對象的兩個要素:
(1)屬性 :用於描述對象靜態特性(結構特性)的一個數據項。如描述一個人可用姓名、性別、身份證號等屬性。
(2)方法(也稱服務):用於描述對象動態特性(行爲特性)的一個操作系列。如每個人都具有工作、學習等行爲特性。
<二>類的概念
(1)同一類中的對象有相同的屬性(也稱爲成員變量,它描述該類的靜態特性或結構特性)
(2)同一類中的對象有相同的方法(也稱服務,它描述該類的行爲特性或動態特性)
(3)同一類中的對象遵守相同的語義規則。(共同的約束或規則)
<三>類與對象
1.對象:對象表示現實世界中某個具體的事物
對象具有兩方面的含義:
(1)在現實世界中:是客觀世界中的一個實體
(2)在計算機世界中:是一個可標識的存儲區域
2.類(class):類是具有共同屬性和行爲的對象的抽象
Java類的基本語法:
<修飾符> class <類名>{
[<屬性聲明>]
[<構造器聲明>]
[<方法聲明>]
}
注:1.<類名>可以是任何合法的標識符,並且是所聲明類的名字。
2.有幾種可使用的<修飾符>,但現在只使用public,聲明類可被任
意訪問。
3.類的正文聲明瞭與類相關的數據屬性、構造器和方法的集合。
<四>面向對象
類是由屬性(成員變量)和方法(成員方法)組成的 。
創建對象步驟:
1.設計類:設計成員變量和成員方法
2.通過類,去創建類的對象
3.通過“對象.屬性(成員變量)” 或者“對象.方法 ”
來調用,完成相應的功能。
例:人類
特徵:能直立行走,製作並使用工具高級動物
屬性:名字、年齡、性別、身高等等
行爲:製作使用工具、工作、吃飯、睡覺等等
成員變量(字段、屬性):定義在類裏面,並在方法外的變量。
<五>聲明方法
方法的基本語法:
<修飾符> <返回類型> <名稱>([<參數表>]){
[<語句>]
}
注:
1.<修飾符>是可選項,並可有很多不同的修飾符,包括public、protected和private等。public訪問修 飾符表明可從其他代碼調用該方法。private表明方法只能在由該類中其他方法調用。
2.<名稱>可以是任何合法的標識符,但限制使用那些已經在使用的名稱。
<六>類、對象與方法(步驟)
1、設計類:設計成員變量和成員方法
語法:class 類名{ }
例:class Person{//類
String name;//成員變量
void speak(){//成員方法
System.out.println(name);
}
}
2、通過類,去創建類的對象
語法 : 類名 對象名稱=new 類名();
例 : Person p=new Person();
解析:Person:創建Person類的實例對象,
p:對象的引用,
new Person():實例化Person對象,調用構造方法Person()
=:Person在內存中的地址賦值給P,所以可以通過變量p引
用對象訪問對象成員(對象被實例化後,jvm自動爲其成
員變量賦初值)
內存:根據數據類型劃分內存空間;new的空間
例:
public class Ch01{
public static void main(String[] args){
Person p=new Person();//創建P對象並實例化
}
}
class Person{//類
String name;//成員變量
void speak(){//成員方法
System.out.println(name);
}
}
3、通過“對象.屬性(成員變量)” 或者“對象.方法 ”來調用,完成相應的功能。
public class Ch01{
public static void main(String[] args){
Person p=new Person();//創建P對象並實例化
p.speak();//訪問對象的成員,調用speak()方法
}
}
class Person{//類
String name;//成員變量
void speak(){//成員方法
System.out.println(name);
}
}
<七>構造函數特點
構造函數作用:
(1)完成類對象的初始化工作,即初始化成員變量
(2)構造函數的名稱必須與類名相同
(3)構造器沒有返回值並且不可被繼承
(4)一般將構造函數的修飾符聲明爲public
(5)構造函數中不能有return語句
1、一個類可以定義多個不同的構造方法
2、每個類都有自己默認構造方法,如果沒有定義,系統會自動生成
若定義,則直接覆蓋
例:public Person(){
// 默認構造方法
}
<八>有無參數的構造函數
1.構造函數的參數:
(1)參數表與方法聲明中的一樣。可以像方法一樣向構造函數傳遞參數。
(2)構造函數可以有0個、1個或者多個參數。
2.無參數的構造函數:
(1)沒有構造函數——使用默認的構造函數(沒有參數,沒有方法體)
(2)如果使用沒有參數的構造函數,則創建的對象具有相同的初始值
<九>構造函數的重載
一個類可以有多個構造函數,叫做構造函數的重載。條件(滿足其一):
(1)參數的個數不同
(2)參數的類型不同
<十>構造函數的使用
(1)不能由編程人員顯式調用。
(2)在創建一個類的新對象的同時,系統會自動調用該類的構造函數爲新對象初始化。
(3)構造函數只能和new關鍵字一起使用。
格式:類名 對象名=new 構造函數名稱(成員變量的初始值)
構造函數小結:
(1)構造函數(方法)名和類名相同
(2)構造方法沒有返回值(void)
(3)主要作用是完成新對象的初始化
(4)在創建新對象時,系統自動調用該類的構造方法
(5)一個類可以有多個構造方法(參數個數和類型不同)
(6)每個類都有一個默認的構造方法
注:構造方法的主要作用:初始化成員變量(屬性)
<十一>this關鍵字
作用:區分成員變量(屬性)
原因:java虛擬機會給每個對象分配this代表當前對象
this注意事項:只能在類定義中使用(包括打印,如:this.name=name:this.name屬於成員變量)
<十二>類變量static/類方法
1.定義:類變量是gailei的所有對象共享的變量
2.語法:訪問修飾符 static 數據類型 變量名;
3.訪問:(1)類名.類變量名;(2)對象名.類變量名
4.類變量原則上用類方法去訪問
注:靜態變量區不能訪問非靜態變量,非靜態則都可去訪問.
5.類變量與實例變量的區別:
(1)加上static稱爲類變量或靜態變量
(2)類變量是與類相關的公共屬性
(3)實例變量屬於每個對象個體的屬性
(4)類變量可以通過類名.類變量名直接訪問
<十二>面向對象四大特徵(封裝、繼承、多態、加抽象包含)
封裝
(1)定義:數據被保護在內部
(2)封裝思想:屬性全部爲私有
通過1個成員方法去控制和訪問私有屬性
(3)訪問控制修飾符
定義:控制方法和變量的訪問權限
public:公開
protected:受保護
default:默認
private:私有
2.抽象:
(1)概念:定義類將共有的屬性和行爲提取出來,形成1個模板(類),稱爲抽象
(2)抽象類:只能被繼承,不能實例化的類。
(3)定義格式:
abstract class 類名{
abstract 返回值類型 方法名([參數表]);
…
}
(4)說明:
*抽象類中可以包含抽象和非抽象方法
*也可以不包含抽象方法和非抽象方法
*只要有一個抽象方法,就是抽象類
*不能創建抽象類的對象 (抽象類不能被實例化)
*使用時必須用其創建子類
*子類可以定義自己的成員變量及方法,但必須將父類中所有抽象的方法代碼寫完
*如果子類只是實現了部分抽象的方法,則該類仍是抽象類
3.異常分類
(1)Java程序運行過程中所發生的異常事件可分爲兩類:
(Error: JVM系統內部錯誤、資源耗盡等嚴重情況
((Exception: 其它因編程錯誤或偶然的外在因素導致的一般性問題,§例如: 空指針訪問 試圖讀取不存在的文件 網絡連接中斷
4.異常處理機制
(1)捕獲異常:在Java中如果需要處理異常,必須先對異常進行捕獲,然後再對異常情況進行處理。使用try和catch關鍵字即可,結構如下:
try{}catch(){}finally{}
try塊包圍的代碼說明這段代碼可能會發生異常,一旦發生異常,異常便會被catch捕獲到,然後需要在catch塊中進行異常處理,finaly塊中的代碼一定會執行
(2)拋出異常:任何Java代碼都可以拋出異常,如:自己編寫的代碼、來自Java開發環境包中代碼,或者Java運行時系統。無論是誰,都可以通過Java的throw語句拋出異常。從方法中拋出的任何異常都必須使用throws子句。在方法聲明上使用throws來表示該方法會有異常拋出,在方法體中使用throw來表示可能會發生的異常
5.自定義異常
使用Java內置的異常類可以描述在編程時出現的大部分異常情況。除此之外,
用戶還可以自定義異常。用戶自定義異常類,只需繼承Exception類即可。
在程序中使用自定義異常類,大體可分爲以下幾個步驟。
–創建自定義異常類。
–在方法中通過throw關鍵字拋出異常對象。
–如果在當前拋出異常的方法中處理異常,可以使用try-catch語句捕獲並處理;否則在方法的聲明處通過throws關鍵字指明要拋出給方法調用者的異常,繼續進行下一步操作。
–在出現異常方法的調用者中捕獲並處理異常。