1. 程式人生 > >Java中面向物件的程式設計概念

Java中面向物件的程式設計概念

  面向物件的程式設計概念 -java學習之路

一、物件

  在面向物件的程式設計設計中,物件當然是最基本的概念。不知道何為物件,怎麼面向物件呢。
  物件一詞最早來源於哲學,講到“一切皆物件”,在這裡不討論哲學的問題了。在生活中,我們可以看到很多物件的例子,如狗,貓,桌子,人等。
  生活中的物件都有兩個共同的屬性:狀態和行為。人有名字,有體重,有身高等狀態,人要吃飯,要學習等行為。根據面向物件程式設計的思路來確定生活中的物件的狀態和行為,把一個具體的物體抽象出來,用程式語言對它進行操作等。
  在概念上,軟體中的物件與生活中的物件類似,都有狀態和行為兩種屬性。在程式語言中,用變數(variable,有些程式語言叫欄位field)儲存狀態,用函式(function,有些程式叫方法method)來定義行為。
  物件之間進行通訊是通過方法對物件內部狀態的操作。這種通訊方法隱藏了物件內部的狀態,在面向物件的基本原則中要求所有通訊都通過物件的方法來實現,這種原則通常稱為資料封裝。
  外界如何使用物件,取決與物件的狀態和改變狀態的方法。將程式碼構建成獨立的軟體物件,具有很多的優點:
  1.模組化。每個物件都是獨立存在的,它的編寫和維護都獨立與其它的物件。獨立的物件能夠很容易的在系統內傳送。
  2.資訊隱藏。使用者只能夠與物件的方法互動,物件的內部實現細節被隱藏,使用者不知道物件實現的細節,也不會輕易的修改物件,這樣能使程式更加安全。
  3.程式碼重用。當物件已經建立,就可以直接使用該物件。這樣寫程式時就能呼叫前輩們已經寫好的有複雜的特殊功能的物件,這樣就可以避免不斷的重寫程式碼,還是實現的相同的功能。
  4.易於除錯。當有些物件出問題時,我們不需要修改怎個程式,可以直接移除那個物件並用其他物件替代。

二、類

  在生活中有許多物件,他們屬於同一型別,有著類似的狀態和行為,這樣我們就可以把他們歸為一個類。在面向物件的術語中稱為類,所有的個體物件是類的例項,類是物件的抽象。
如在下面的程式碼中Person類實現了人的一種方法:

class Person {
    // 狀態
    String name;// 人的姓名
    String sex;// 人的性別
    int age;// 人的年齡

    // 行為
    public void setName(String name) {// 設定人的姓名
        this.name = name;
    }

    public
void setAge(int age) {// 設定人的年齡 this.age = age; } public void setSex(String sex) { // 設定人的性別 this.sex = sex; } public void displayPersonMessage(){ //輸出人的資訊 System.out.println("姓名:" + name + "年齡:" + age + "性別" + sex); } }

  該類的設計是對人這個物件的討論,name, age和sex等欄位表示物件的狀態,setName, setAge, setSex和displayPersonMessage等方法定義了物件與外界的互動方式。上面的程式碼中沒有main方法。類並不是一個完整的應用程式,只是人這個物件的藍圖。
下面的PersonDemo類中

例項化兩個Person物件並呼叫他們的方法:

public class PersonDemo {
    public static void main(String[] args) {
        Person personOne = new Person();// 例項化物件
        Person personTwo = new Person();
        // 通過例項化的物件呼叫該物件的方法

        personOne.setName("第一個人");//設定姓名
        personTwo.setName("第二個人");

        personOne.setAge(20);//設定年齡
        personTwo.setAge(30);

        personOne.setSex("男");//設定性別
        personTwo.setSex("女");

        personOne.displayPersonMessage();//輸出資訊
        personTwo.displayPersonMessage();
    }
}
執行完畢後會輸入兩個人的姓名,年齡和性別如下:
姓名:第一個人  年齡:20  性別:男
姓名:第二個人  年齡:30  性別:女

3、繼承

  一般來說,不同的物件也有相同的地方,比如學生和老師都是人,都有名字,年齡和性別等屬性。但他們也有不同的地方,他們的職業不同,如學生有學號,教師有職稱等。
在面向物件程式程式設計中,類可以繼承其他類的狀態與行為。上面的Person類就是Student類,Teacher類的超類(superclass),在java語言中,一個類只能有一個直接超類,每個超類有潛在的無數個子類(subclass)。
建立子類的語法如下,類宣告時按順序新增extends和要繼承的類名:

class Student extends Person {
        //新的欄位和方法定義
    }

  這樣定義後,Student類擁有與Person相同的欄位和方法。寫Student類時只需要關注那些不同的屬性。這種定義方式會增強程式碼的可讀性。要注意的是,文件化子類定義狀態和行為要小心,因為子類的原始檔不會包括超類的程式碼。

4、介面
  如前面說到,物件通過方法與外界互動,也就是說方法是物件與外界的介面,比如電腦上的電源按鈕,就是人與電腦內部電路的介面,人可以通過電源控制電腦。
  絕大多數情況下,介面被定義成為一組方法體為空的相關方法的集合,如果將人定義成介面,其形式如下:

interface Person {
    public void setName(String name);// 設定人的姓名

    public void setAge(int age);// 設定人的年齡

    public void setSex(String sex); // 設定人的性別

    public void displayPersonMessage();//輸出人的資訊
    }

  實現介面時,在類宣告中使用關鍵字implements,形式如下:

class Student implements Person {
    //類的其他部分
    //介面方法的實現
}   

 通過實現介面,類可以更形式化地定義行為。介面構成了類與外界的契約,而且該契約在構建程式時由編譯器強制執行。如果類宣告實現了一個介面,那麼介面中的所有方法都必須出現在該類中,否則編譯不通過。

5、包
  是相關類與介面的名稱空間。概念上包和資料夾類似,可以將不同的.java檔案放在不同的包中,按照包的邏輯形式組織相關類和介面有很大的意義。
  java平臺提供了強大的類庫(包的集合)用於應用程式開發。該類庫通常稱為應用程式介面(Application programming Interface, API)。類庫中的包包含了程式設計中的常見任務。
  java平臺應用程式介面規範(Java Platform API Specification)給出了Java SE平臺提供的所有包、介面、類、欄位、方法的完整列表。我們在寫Java程式時可供參考。

相關推薦

Java面向物件程式設計概念

  面向物件的程式設計概念 -java學習之路 一、物件   在面向物件的程式設計設計中,物件當然是最基本的概念。不知道何為物件,怎麼面向物件呢。   物件一詞最早來源於哲學,講到“一切皆物件”,在這裡不討論哲學的問題了。在生活中,我們可以看到很多物件的例

Java基礎——面向物件程式設計(過載、重寫、封裝)

Java基礎——面向物件程式設計(過載、重寫) Java基礎知識圖解 重寫與過載 重寫: 過載 可變個數形參 方法的引數傳遞(重點、難點) 封裝 訪問許可權修飾符

使用JAVA實現面向物件程式設計基礎

第一章 物件和封裝: 構造方法特點: 方法名和類名相同 沒有返回值型別 系統預設提供無參構造方法 自己編寫構造方法後系統不提供預設構造方法 作用: 完成物件的例項化工作 方法過載(OverLoad) 在同一個類中,方法名相同,引數列表不同的方法稱為方法的過載 引數列表不同指引數個數,

Python面向物件概念

1、語言的分類 1)面向機器 抽象成機器指令,機器容易理解。代表:組合語言。 2)面向過程 做一件事,排除步驟,第一步做什麼,第二步做什麼,如果出現A問題,做什麼處理,出現b問題,做什麼處理。問題規模小,步驟化,按部就班處理。  代表:c語言。 (按照步驟進行處理的。) 面向物件和麵向過

Scala面向物件程式設計之trait

1.1將trait作為介面使用 Scala中的trait是一種特殊的概念; 首先先將trait作為介面使用,此時的trait就與Java中的介面 (interface)非常類似; 在trait中可以定義抽象方法,就像抽象類中的抽象方法一樣,只要不給出方法的方法體即可; 類可以使用ex

JAVA-面向網路程式設計---單層互動

面向網路程式設計---單層互動: 客戶端說明: /* * 實現TCP客戶端,連結到伺服器 * 和伺服器實現資料互動 * 實現TCP客戶端的類 java.net.Scoket * 構造方法: * Socket sco = new Sockte( String ip ,in

JAVA面向物件程式設計詳解

歷史 1967年挪威計算中心的Kisten Nygaard和Ole Johan Dahl開發了Simula67語言,它提供了比子程式更高一級的抽象和封裝,引入了資料抽象和類的概念,它被認為是第一個面嚮物件語言。 20世紀70年代初,Palo Alto研究中心的Alan Kay所在的研

Java基礎——面向物件程式設計1

Java基礎知識圖解 面向物件 面向物件(OOP)與面向過程 二者都是一種思想,面向物件是相對於面向過程而言的。面向過程,強調的是功能行為。面向物件,將功能封裝進物件,強調具備了功能的物件 。 面向物件更加強調運用人類在日常的思維邏輯中採用的思想方法與

Java初學 面向物件程式設計(介面和內部類)

Java初學 面向物件程式設計(介面和內部類) 1、定義一個Phone介面,其中包含String GetPrice()方法和double GetWeight()方法;(1)在主類中設計void PrintPhone(Phone p)方法,呼叫Phone介面中的兩

Java學習-面向物件程式設計的三大特性(多型)

文章目錄 一、基本含義 1.1 基本點 1.2 注意事項 1.2.1 多型使用——系統呼叫步驟 1.2.2 父類引用指向子類物件 1.3 多型的實現方式 1.3.1 方式一——重

Java面向物件三大特徵總結

JAVA中面向物件的三大特徵:         面向物件具有繼承性(Inheritance)         面向物件具有多型性(Polymorphism)         面向物件具有封裝性(Encapsulation) 一、繼承          多個類具有共同的屬性(

Accp8.0 S2 02使用Java實現面向物件程式設計

物件和封裝類和物件使用物件的目地:用計算機語言描述現實世界用計算機語言解決現實世界的問題使用面向物件的好處:交流更加流暢提高設計和開發效率怎樣實現面向物件程式設計找出類找出屬性(變數)找出行為(方法)類圖:“+”為public 公開的“-“為private私有的this關鍵字,是對一個物件的預設引用,用以區分

java面向物件程式設計——類與物件的繼承和多型

一、程式碼塊 程式碼塊定義:使用 {} 定義的一段程式碼。 根據程式碼塊定義的位置以及關鍵字,又可分為以下四種: 普通程式碼塊(定義在方法中,除錯) 構造塊(定義在類中的(不加修飾符)) 靜態塊 同步程式碼塊 構造塊 構造塊在每次產生一個新的物件就呼叫一次構

java面向物件程式設計——類與物件的封裝

Java比C更方便的地方在於Java是面向物件的。面向物件的特徵: 1、封裝 ; 2、繼承 ; 3、多型; 以下對面向物件的封裝特徵進行簡述: 一、類與物件的定義與使用 類是指共性的概念,物件是一個具體的、可以使用的事物。 首先產生類,而後才可以產生物件。 類的組成: 1.

Java面向物件程式設計概述

前言        面向物件程式設計(OOP),是當今主流的程式設計方式,取代了20世紀70年代“過程化設計”程式設計。Java是純面向物件的語言,用氣進行面向物件的軟體開發非常方便、高效。 面向物件術語 &nb

JAVA面向物件基礎:抽象類、初始化塊

本文轉載連線為:http://android.yaohuiji.com/archives/3241 一、抽象類 用 abstract 修飾的類定義,我們稱之為抽象類,抽象類不能被例項化。 用 abstract 修飾的方法,我們稱之為抽象方法,抽象方法不能有方法體。 面向物

java面向物件思想的理解

        java是一門純粹的面向物件的語言。面向物件這種程式設計模式它將現實世界中的一切事物都看作是物件,例如,一個人是一個物件,汽車、飛機、小鳥等等,都是物件;它強調從物件出發,以物件為中心用人類的思維方式來認識和思考問題。每個物件都具有各自的狀態特徵(也可以稱為

Java實現面向物件程式設計(入門)

一、◆抽象和封裝1、現實世界是“面向物件”的,面向物件就是採用“現實模擬”的方法設計和開發程式。從現實中抽象出類:①發現類 ②發現類的屬性 ③發現類的方法用面向物件的思想描述面向物件的世界,符合人類的思維習慣。(類圖用於分析和設計類,更直觀、容易理解。)2、面向物件設計的過

Java實現面向物件程式設計(入門)(四)

四、■介面1、介面中的屬性都是全域性靜態常量,介面中的方法都是全域性抽象方法,介面中沒有構造方法。  ★Java中實現介面的定義語法和類實現介面的語法如下:∵[修飾符] interface 介面名 extends 父介面1,父介面2,……{//常量定義//方法定義 }∴cl

使用Java實現面向物件程式設計 第一章

使用Java實現面向物件程式設計 1. 面向物件就是採用“現實模擬”的方法設計和開發程式 2. 面向物件設計的過程就是抽象過程,分一下3步構成 (1):發現類 (2):發現類的屬性 (3):發現類的方法 3. 抽象時遵循的原則如下: