1. 程式人生 > >物件與類(詳解上)

物件與類(詳解上)

物件與類(上)

  1. 例項
  2. 例項域
  3. 例項域值
  4. 物件與例項的區別
  5. 物件變數與物件的區別
  6. 自定義類模板
  7. 構造器
  8. 隱式引數與顯示引數
  9. final例項域

①類:

  是構造物件的的模板,類之中定義的是屬性和行為(方法)。

class Person {// 定義一個Person類
    String name ;
    int age ;
    public void tell() {      
          System.out.println("姓名:" + name + ",年齡:" + age) ;
         }
}

類定義完成之後,肯定無法直接使用。如果要使用,必須依靠物件,那麼由於類屬於引用資料型別,所以物件的產生格式(兩種格式)如下:

①: 類名稱 物件名稱 =new 類名稱();

②: 類名稱 物件名稱 =null;

  物件名稱 =new 類名稱();

  

public class Test{
        public static void main(String args[]) {
            Person per = new Person() ;// 宣告並例項化物件
            per.name = "張三" ;//操作屬性內容
            per.age = 30 ;    
            per.get() ;//呼叫類中的get()方法
        }
}
class Person { String name ; int age ; public void get() { System.out.println("姓名:" + name + ",年齡:" + age); } }

 

②例項:

  由類構造物件的過程稱為建立類的例項,物件中的資料稱為例項域,操縱資料的過程稱為方法,對於每個特定類例項(物件)都有一組特定的例項域值,這些值的集合就是這個物件的當前狀態。

 

③例項域:

  如name域

 

④例項域值

  黃駿捷(名字)

 

⑤物件與例項的區別:

  物件是抽象的說法,你可以把它看作一個符合它自身定義的所有例項的代表,而例項則是物件的現實體現。你可以說一個例項是一個物件,但你不能說一個物件是一個例項。因為定義物件時只是把自身的規則和邏輯定義好,例項可以通過輸入不同的資料使得自己和其他例項不同,比如人類是抽象的,人類中的小潘就是例項

 

⑥物件變數(與物件的區別):

  Date deadline

  定義了一個物件變數deadline,它可以引用Date型別的物件。但是物件變數deadline不是一個物件,實際上也沒有引用物件,此刻不能將任何Date方法應用於這個物件變數語句上,所以必須初始化變數deadline  

  deadline = new Date(); 

  一般設定Date deadline=null來表示目前沒有引用任何物件。Date是一個類。Date deadline則是建立一個引用變數,dead=new Date() 則是在記憶體中建立一個物件(開闢了1片空間),物件的模板就是Date,此時就可以使用引用變數deadline,去引用物件中的變量了。

 

⑦自定義類模板:

class Employee
{
    //instance fileds(例項域)
    private String name;

    //constructor(構造器)
    public Employee(String name){
        name = n;
    }
    //方法
    public String getName(){
        return name;
    }
}

 

⑧構造器:

  構造器與類名同名。在構造Employee類和物件時,構造器會執行將例項域初始化所要的狀態

//構造器總是伴隨著new操作符的執行杯呼叫
new Employee("小明")    //正確

//不能對一個已經存在的物件呼叫構造器來達到重新設定例項域的目的
james.Employee("小明")    //錯誤

   不要在構造器中定義與例項域重名的區域性變數,否則會遮蔽同名的例項域,如下的變數name只能在構造器內部訪問,沒有返回值

public Employee(String n){
    String name =n;   //錯誤 
}

 

⑨隱式引數和顯示引數:

  public void sName(String name){
  system.out.pritln(name);
}

number01.sName("小明");

  顯式引數:number01  隱式引數:小明

 

⑩final例項域:

class Employee{
    private final String name
    .........
}

  name域被宣告為final,這個值不再會被修改