程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> JSP編程 >> 關於JSP >> Java學習筆記之對象與類(1/3)

Java學習筆記之對象與類(1/3)

編輯:關於JSP

Java面向對象的程序設計(OOP)和如何編寫自己的類。我們知道Java是完全面向對象的,必須熟悉OOP才能編寫更好的Java程序,這與過去70年代的“結構化”、“過程化”的程序設計有著很大的區別

一、類

類(class)是構造對象的藍圖或模板。由類構造(construct)對象的過程就是創建類的實例(instance)的過程。

封裝(encapsulation)是與類有關的一個重要概念。形式上來說,封裝是把數據和行為組合在一個包中,並對對象的使用者隱藏了數據的實現方式。對象的數據稱為實例域(instance field),操作數據的過程稱為方法(method)。

繼承(inheritance)使得Java中的一個類可以通過拓展另一個類而來。實際上,Java中所有的類都是繼承了一個最原始的超類——Object。繼承而來的新類具有基類的全部屬性和方法。

二、對象

對象的三個主要特性:

1.行為(behavior)——對對象施加哪些操作或方法?
2.狀態(state)——施加方法時,對象實例域如何變化?
3.標識(identity)——如何辨別具有相同行為和狀態的不同對象?
三、類之間的關系

常見的有三種:

1.依賴(uses-a)—— 一個類的方法需要操縱另一個類的對象;
2.聚合(has-a)—— 一個類的對象包含另一個類的對象;
3.繼承(is-a)—— 具有另一個類的全部屬性和方法,拓展而來,並可以添加額外的功能。
四、自定義類

1. 類定義形式

 代碼如下 復制代碼 class example
{
      constructor1
      constructor2
      ...
      method1
      method2
      ...
      field1
      field2
      ...
}

例如:

 代碼如下 復制代碼 class Student
{
    //構造器
    public Student(String n,int num,int year,int month,int day)
    {
         name = n;
         number = num;
         GregorianCalendar calendar = new GregorianCalendar(year,month-1,day);
         birthday = calendar.getTime();
    }
    //方法
    public String getName()
    {
         return name;
    }
    public int getNumber()
    {
         return number;
    }
    public Date getBirthday()
    {
         return birthday;
    }
    //域
    private String name;
    private int number;
    private Date birthday;
}

2.  隱式參數和顯式參數

 代碼如下 復制代碼 public void setNumber(int n)
{
    number = n;
}Student student = new Student("Jiankun Lei",136524,1991,1,1);
student.setNumber(1000);

//student為隱式參數,1000為顯式參數隱式(implicit)參數,出現在方法名前的類對象;顯式(explicit)參數是在方法名後括號中的參數。

3. 基於類的訪問權限

記住:方法可以訪問所調用對象的私有數據。也就是說一個類的方法可以訪問所屬類的所有對象的私有數據。

例如可以定義判斷兩個學生的equals的方法:

 代碼如下 復制代碼 boolean equals(Student other)
{
      return number.equals(other.number); //number是Student類的私有數據
}

4. final實例域

將類中的實例域定義為final。構造對象時必須初始化這樣的域,構造後,不能再修改。

 代碼如下 復制代碼 class Student
{
      ...
      private final String name;
}

5. 靜態域與靜態方法

靜態域:將域定義為static,每個類只能有一個這樣的域。它屬於類,不屬於任何獨立的對象。

 代碼如下 復制代碼 class Employee
{
      ...
      private int id;
      private static int nextId;
      ...
}public void setId()
{
      id = nextId;
      nextId++;
}

1 2 3

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved