Java面向對象(OOP)
1.面向過程與面向對象
面向過程以函數解決問題
面向對象優先得到對象----處處皆對象
2.類和對象區別
(1)類是抽象的,對象是具體的
(2)類可以生成對象
(3)類是由對象分析特點生成一個抽象概念
3.類的組成
屬性:靜態特點,由變量來充當
方法:動態特點
4.由類得到對象(實例化)
5.局部變量與全局變量(屬性)區別
局部變量必須聲明、賦值才能操作
屬性是有默認值,float-->0.0f double-->0.0d char-->'/u0000'
整形-->0 boolean--->false 引用類型-->null
6.屬性隱藏
如果出現屬性與局部變量衝突,採用就近原則
-----小結---- 利用數組、類、對象實現數據結構中棧--------
棧:
靜態特點:
存儲結構--數組
元素個數--size
動態特點:
入棧();
出棧();
7.方法重載:在同一個類中,方法名相同,參數列表(參數的個數或參數的數據類型)不一樣
java編譯器在編譯時可以區別方法重載,成爲編譯多態
構造方法重載
成員方法重載
8.構造函數
類 ----構造函數------>對象
8.1構造函數只能被new關鍵字調用
8.2構造函數也可以重載
8.3如果類中沒有提供構造函數,系統會增加一個默認的無參構造
8.4如果爲類增加了構造函數,則系統不會再增加默認的無參構造
9.對象內存創建過程
1)開闢空間,取默認值
2)初始化屬性
3)調用構造函數
Cat c;//此句並未在內存中開闢空間
內存分配
棧與堆區別:棧空間比較小,速度特別快,用來基本類型數據
堆空間比較大,速度較慢,用來存放引用類型數據
java中只要new一下,那麼堆上面就會出現一個新對象
10方法的參數傳遞(值傳遞)
參數爲基本類型的數據,操作值不會被保留
參數爲引用類型的數據,操作狀態會被永久保留下來
11.this關鍵字的用法
1)區別同名變量
2)可以在一個構造函數中調用另外一個構造函數,這句話需要
放在代碼的首行
===============================================
面向對象三大特性:封裝、繼承、多態
兩大機制:垃圾回收器、JVM機制
1.封裝:爲了保護對象的特點(屬性、方法)
對於屬性保護,要求屬性寫成私有的,並且提供Getter(讀)/Setter(寫)方法
對於方法保護,要求對於複雜功能,會拆分很多小方法,並且將小方法定義爲private,
對外提供一個public的方法
對於方法的封裝
class My
{
//打印輸出100以內所有的素數
public void printS(){
for(int i=2;i<=100;i++){
if(isPrime(i)){
System.out.println(i);
}
}
}
private boolean isPrime(int num){
boolean flag=true;
for(int i=2;i<num;i++){
if(num%i==0){
flag=false;
break;
}
}
return flag;
}
}
對於屬性的封裝
class Dice
{
private int num;
public void roll(){
//Math.random()=== [0,6) 1 2 3 4 5 6
num=(int)(Math.random()*6)+1;
}
//寫
public void setNum(int num){
if(num<=0||num>6){
this.num=1;
}else{
this.num=num;
}
}
//讀的方法
public int getNum(){
return this.num;
}
}
//棧修改爲保存 Person
java 筆記 類和對象
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
歡迎使用CSDN-markdown編輯器
丶长歌
2018-08-30 15:44:31
java作業 流水線
丶长歌
2018-08-30 15:44:28
java課堂練習,反射
丶长歌
2018-08-30 15:44:28
java之工廠設計
zzc_doggie
2018-08-28 11:27:43
使用面向對象的概念表示出下面的生活場景
zzc_doggie
2018-08-28 11:27:42