java 筆記 類和對象

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


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