1. 理解物件導向
強調的是功能行為
將功能封裝進物件,強調具備了功能的物件。
1.1 物件導向的好處
先要去找具有所需的功能的物件來用。
如果該物件不存在,那麼建立乙個具有所需功能的物件。
這樣簡化開發並提高復用。
1.2 物件導向開發,設計,特徵
•開發的過程:其實就是不斷的建立物件,使用物件, 指揮物件做事情。1.3 物件導向的特徵:•設計的過程:其實就是在管理和維護物件之間的關 系。
封裝(encapsulation)
繼承(inheritance)
多型(polymorphism)
1.4 類與物件的關係:
2. 類的定義
屬性:對應類中的成員變數。
行為:對應類中的成員函式。
2.1成員變數和區域性變數的區別
成員變數定義在類中,在整個類中都可以被訪問。成員變數隨著物件的建立而建立,存在於物件所在的堆記憶體中。
成員變數有預設初始化值。
區域性變數只定義在區域性範圍內,如:函式內,語句內等。區域性變數存在於棧記憶體中。
作用的範圍結束,變數空間會自動釋放。
區域性變數沒有預設初始化值。
public static void main(string args)
}class person
}
2.2 匿名物件
匿名物件是物件的簡化形式3. 封裝(encapsulation)匿名物件兩種使用情況
當對物件方法僅進行一次呼叫的時
匿名物件可以作為實際引數進行傳遞
封裝:是指隱藏物件的屬性和實現細節,僅對外提供 公共訪問方式。3.1 private(私有)關鍵字好處:將變化隔離。
便於使用。
提高重用性。
提高安全性。
封裝原則:
將不需要對外提供的內容都隱藏起來。
把屬性都隱藏,提供公共方法對其訪問。
private關鍵字:是乙個許可權修飾符。
用於修飾成員(成員變數和成員函式)
被私有化的成員只在本類中有效。
常用之一:
4.將成員變數私有化,對外提供對應的set ,get 方法對其進行訪問。提高對資料訪問的安全性。
class person
public void setname(string name)
public int getage()
public void setage(int age)
}
3.2 建構函式
特點:
1.函式名與類名相同
2.不用定義返回值型別
3.不可以寫return語句
作用:
給物件進行初始化。
注意:
1.預設建構函式的特點。
2.多個建構函式是以過載的形式存在的。
class person
//帶參建構函式
public person(string name)
//帶參建構函式
public person(string name, int age)
}
3.3 this關鍵字
換言之:this代本類物件的引用。
當在函式內需要用到呼叫該函式的物件時,就用this。
3.4 static(靜態)關鍵字class person
//帶參建構函式
public person(string name, int age)
}
•用於修飾成員(成員變數和成員函式)隨著類的載入而載入被修飾後的成員具備以下特點:
優先於物件存在
被所有物件所共享
可以直接被類名呼叫
3.5 成員變數和靜態變數的區別
1.變數的生命週期不同
成員變數隨著物件的建立而存在,隨著物件的**而釋放
靜態變數隨著類的載入而存在,隨著類的消失而消失
2.呼叫的方法不同
成員變數只能被物件呼叫。
靜態變數既可以被物件呼叫,還可以被類名呼叫
3.別名不同
成員變數也成為例項變數
靜態變數也稱為類變數
4.資料的儲存位置不同
成員變數資料儲存在堆記憶體的物件中,所以也叫物件的特有資料
靜態變數資料儲存在方法區共享資料區的靜態區中,所以也叫物件的共享資料。
靜態方法只能訪問靜態成員(非靜態既可訪問靜態,亦可訪問非靜態)
靜態方法中不可以寫this,super關鍵字
主函式是靜態的
public class test8
}//person 類
class person
//帶參建構函式
public person(string name, int age)
// 成員變數的set,get方法
public string getname()
public void setname(string name)
public int getage()
public void setage(int age)
// sayhello()函式
public void sayhello()
//靜態函式 ,被引用的成員變數name必須是靜態的才能被靜態函式呼叫
public static void showstaticname()
}
3.6 主函式main
特別之處:
格式是固定。public static void main(string args)
被jvm所識別和呼叫。
public:許可權必須是最大的。
static:不需要物件的,直接用主函式所屬類名呼叫即可。
void:主函式沒有的返回值。
string args:這是主函式的引數列表,是乙個陣列型別的引數,而且元素都是字串型別。
main:函式名,不是關鍵字,只是乙個jvm識別的固定名字
3.7 靜態**塊
作用:用於給類初始化
public class staticcodedemo
public static void main(string args)
}class staticcode
staticcode(){}
void show()
}class person
person(){}
person(string name,int age)
void show()
}
java基礎 物件導向
面向過程的思想 一步一步去實現,而具體的每一步都需要我們去實現和操作,這些步驟相互協作完成我們的需求 面向思想 將步驟和功能進行封裝,用的時候,找對應的類 物件導向不關注過程 物件導向就相當於指揮者 面向過程相當於員工 物件導向是基於面向過程 特點 是一種更符合人們思考習慣的思想。可以將複雜的事情簡...
Java基礎 物件導向
可以拿生活中的例項來理解面向過程與物件導向,例如五子棋。封裝 encapsulation 繼承 inheritance 多型 polymorphism 1.定義 隱藏物件的屬性和實現細節,僅對外公開介面,控制在程式中屬性的讀取和修改的訪問級別。2.封裝途徑4.好處3.原則4.成員變數和區域性變數 成...
Java物件導向基礎
把具有共同特點和行為的東西封裝成乙個個物件。例項化類 建立物件 使用物件的屬性或方法。物件儲存在jvm的堆記憶體中,物件的識別符號 引用值儲存在棧記憶體 儲存了物件在堆記憶體中的位址。class的許可權修飾符只可以用public和default public class classname 成員方法...