成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

Java? 教程(面向?qū)ο缶幊谈拍睿?

FuisonDesign / 644人閱讀

面向?qū)ο缶幊谈拍?/b>

如果你以前從未使用過面向?qū)ο蟮木幊陶Z言,那么在開始編寫任何代碼之前,你需要學(xué)習(xí)一些基本概念,本課將向你介紹對象、類、繼承、接口和包,每個討論都關(guān)注這些概念如何與現(xiàn)實世界相關(guān),同時介紹Java編程語言的語法。

什么是對象?

對象是理解面向?qū)ο蠹夹g(shù)的關(guān)鍵,環(huán)顧四周,你會發(fā)現(xiàn)許多現(xiàn)實世界中的東西:你的狗,你的桌子,你的電視機,你的自行車。

真實世界的對象有兩個特征:它們都有狀態(tài)和行為,狗有狀態(tài)(名字,顏色,品種,饑餓)和行為(吠叫,挑逗,搖尾巴),自行車也有狀態(tài)(當(dāng)前齒輪,當(dāng)前踏板節(jié)奏,當(dāng)前速度)和行為(換檔,改變踏板節(jié)奏,踩剎車),識別真實對象的狀態(tài)和行為是開始考慮面向?qū)ο缶幊痰暮梅椒ā?/p>

現(xiàn)在花一分鐘觀察你周圍的真實世界,對于你看到的每一個物體,問自己兩個問題:“這個對象可能處于什么狀態(tài)?”和“這個對象可能執(zhí)行什么行為?”,一定要寫下你的觀察結(jié)果,正如你所做的,你會注意到現(xiàn)實世界中的對象在復(fù)雜性上是不同的;你的臺燈可能只有兩個可能的狀態(tài)(打開和關(guān)閉)和兩個可能的行為(打開和關(guān)閉),但是你的桌面收音機可能有其他狀態(tài)(打開、關(guān)閉、當(dāng)前音量、當(dāng)前站)和行為(打開、關(guān)閉、增加音量、減少音量、查找、掃描和調(diào)優(yōu))。你可能還注意到,一些對象反過來也將包含其他對象,這些實際的觀察結(jié)果都轉(zhuǎn)化為面向?qū)ο缶幊痰氖澜纭?/p>

軟件對象在概念上與真實世界的對象相似:它們也包括狀態(tài)和相關(guān)的行為,對象將其狀態(tài)存儲在字段中(某些編程語言中的變量),并通過方法(某些編程語言中的函數(shù))公開其行為,方法對對象的內(nèi)部狀態(tài)進行操作,并作為對象到對象通信的主要機制,隱藏內(nèi)部狀態(tài)并要求通過對象的方法執(zhí)行所有交互稱為數(shù)據(jù)封裝 — 面向?qū)ο缶幊痰幕驹瓌t。

以自行車為例:

通過歸因于狀態(tài)(當(dāng)前速度,當(dāng)前踏板節(jié)奏和當(dāng)前檔位)并提供改變該狀態(tài)的方法,該對象仍然控制外部世界如何被允許使用它,例如,如果自行車僅具有6個檔位,則換檔的方法可以拒絕小于1或大于6的任何值。

將代碼打包到多帶帶的軟件對象中可以帶來很多好處,包括:

模塊化:對象的源代碼可以獨立于其他對象的源代碼編寫和維護,一旦創(chuàng)建,對象可以很容易地在系統(tǒng)內(nèi)部傳遞。

信息隱藏:通過只與對象的方法交互,其內(nèi)部實現(xiàn)的細節(jié)仍然隱藏在外部世界之外。

代碼重用:如果一個對象已經(jīng)存在(可能由另一個軟件開發(fā)人員編寫),你可以在程序中使用該對象,這允許專門實現(xiàn)/測試/調(diào)試復(fù)雜的、特定于任務(wù)的對象,然后你可以信任這些對象在你自己的代碼中運行。

可插入性和調(diào)試方便:如果某個特定對象出現(xiàn)問題,你可以簡單地從應(yīng)用程序中刪除它,并將另一個對象插入替換,這類似于在現(xiàn)實世界中解決機械問題,如果螺栓斷裂,你要更換它,而不是整個機器。

什么是類?

在現(xiàn)實世界中,你經(jīng)常會發(fā)現(xiàn)許多多帶帶的物體都是一樣的,可能還有成千上萬的其他自行車存在,所有的制造和模型都是一樣的,每一輛自行車都是用同樣一套藍圖建造的,因此包含了同樣的部件,在面向?qū)ο蟮男g(shù)語中,我們說你的自行車是稱為自行車的對象類的實例,類是創(chuàng)建單個對象的藍圖。

下面的Bicycle類是自行車的一種可能實現(xiàn):

class Bicycle {

    int cadence = 0;
    int speed = 0;
    int gear = 1;

    void changeCadence(int newValue) {
         cadence = newValue;
    }

    void changeGear(int newValue) {
         gear = newValue;
    }

    void speedUp(int increment) {
         speed = speed + increment;   
    }

    void applyBrakes(int decrement) {
         speed = speed - decrement;
    }

    void printStates() {
         System.out.println("cadence:" +
             cadence + " speed:" + 
             speed + " gear:" + gear);
    }
}

Java編程語言的語法對你來說是全新的,但是這個類的設(shè)計是基于之前對自行車對象的討論,字段cadence、speed以及gear表示對象的狀態(tài),方法(changeCadence、changeGear、speedUp等)定義了它與外部世界的交互。

你可能已經(jīng)注意到,Bicycle類不包含main方法,那是因為它不是一個完整的應(yīng)用程序;這只是在應(yīng)用程序中使用的自行車的藍圖,創(chuàng)建和使用新的Bicycle對象的職責(zé)屬于應(yīng)用程序中的其他類。

這里有一個BicycleDemo類,它創(chuàng)建兩個獨立的Bicycle對象并調(diào)用它們的方法:

class BicycleDemo {
    public static void main(String[] args) {

        // Create two different 
        // Bicycle objects
        Bicycle bike1 = new Bicycle();
        Bicycle bike2 = new Bicycle();

        // Invoke methods on 
        // those objects
        bike1.changeCadence(50);
        bike1.speedUp(10);
        bike1.changeGear(2);
        bike1.printStates();

        bike2.changeCadence(50);
        bike2.speedUp(10);
        bike2.changeGear(2);
        bike2.changeCadence(40);
        bike2.speedUp(10);
        bike2.changeGear(3);
        bike2.printStates();
    }
}

此測試的輸出打印兩輛自行車的cadencespeedgear

cadence:50 speed:10 gear:2
cadence:40 speed:20 gear:3
什么是繼承?

不同種類的物體之間往往有一定的共同之處,例如山地自行車、公路自行車和雙人自行車,都有自行車的特點(目前的速度,目前的踏板節(jié)奏,目前的檔位),然而,每個還定義了使它們不同的其他功能:雙人自行車有兩個座位和兩套車把;公路自行車有彎車把;一些山地自行車有一個額外的鏈環(huán),使它們的齒輪比更低。

面向?qū)ο缶幊淘试S類從其他類繼承共同的狀態(tài)和行為,在這個例子中,Bicycle現(xiàn)在成為了MountainBike、RoadBikeTandemBike的超類,在Java編程語言中,每個類都允許有一個直接的超類,每個超類都可能有無限數(shù)量的子類:

創(chuàng)建子類的語法很簡單,在類聲明的開頭,使用extend關(guān)鍵字,后跟要繼承的類的名稱:

class MountainBike extends Bicycle {

    // new fields and methods defining 
    // a mountain bike would go here

}

這使MountainBike擁有與Bicycle相同的字段和方法,但它的代碼卻只關(guān)注使它獨一無二的特性,這使得子類的代碼易于閱讀,但是,莫必須注意正確記錄每個超類定義的狀態(tài)和行為,因為該代碼不會出現(xiàn)在每個子類的源文件中。

什么是接口?

正如你已經(jīng)了解的,對象通過它們公開的方法定義它們與外部世界的交互,方法形成對象與外界的接口;例如,電視機前的按鈕是你和塑料外殼另一面的電線之間的接口,你按下“電源”按鈕,打開和關(guān)閉電視。

在最常見的形式中,接口是一組具有空體的相關(guān)方法,自行車的行為(如果指定為接口)可能如下所示:

interface Bicycle {

    //  wheel revolutions per minute
    void changeCadence(int newValue);

    void changeGear(int newValue);

    void speedUp(int increment);

    void applyBrakes(int decrement);
}

要實現(xiàn)這個接口,你的類的名稱將會改變(例如,對特定品牌的自行車,例如ACMEBicycle),并且你將在類聲明中使用implements關(guān)鍵字:

class ACMEBicycle implements Bicycle {

    int cadence = 0;
    int speed = 0;
    int gear = 1;

   // The compiler will now require that methods
   // changeCadence, changeGear, speedUp, and applyBrakes
   // all be implemented. Compilation will fail if those
   // methods are missing from this class.

    void changeCadence(int newValue) {
         cadence = newValue;
    }

    void changeGear(int newValue) {
         gear = newValue;
    }

    void speedUp(int increment) {
         speed = speed + increment;   
    }

    void applyBrakes(int decrement) {
         speed = speed - decrement;
    }

    void printStates() {
         System.out.println("cadence:" +
             cadence + " speed:" + 
             speed + " gear:" + gear);
    }
}

實現(xiàn)接口允許類對其承諾提供的行為變得更加正式,接口在類和外部世界之間形成契約,并且該契約在構(gòu)建時由編譯器強制執(zhí)行,如果你的類聲稱實現(xiàn)了一個接口,那么在該類成功編譯之前,該接口定義的所有方法必須出現(xiàn)在其源代碼中。

要實際編譯ACMEBicycle類,你需要將public關(guān)鍵字添加到已實現(xiàn)的接口方法的開頭,稍后你將在有關(guān)類和對象以及接口和繼承的課程中了解相關(guān)原因。
什么是包?

包是組織一組相關(guān)類和接口的命名空間,從概念上來說,你可以將包看作類似于計算機上的不同文件夾,你可以將HTML頁面保存在一個文件夾中,將圖像保存在另一個文件夾中,將腳本或應(yīng)用程序保存在另一個文件夾中。因為用Java編程語言編寫的軟件可以由數(shù)百或數(shù)千個多帶帶的類組成,所以通過將相關(guān)的類和接口放置到包中來組織事情是有意義的。

Java平臺提供了一個龐大的類庫(一組包),可以在你自己的應(yīng)用程序中使用,這個庫被稱為“應(yīng)用程序編程接口”,簡稱為“API”,它的包代表了最常用于通用編程的工作。例如,String對象包含字符串的狀態(tài)和行為;File對象允許程序員輕松地在文件系統(tǒng)上創(chuàng)建、刪除、檢查、比較或修改文件;Socket對象允許創(chuàng)建和使用網(wǎng)絡(luò)sockets;各種GUI對象控制按鈕和復(fù)選框以及與圖形用戶界面相關(guān)的任何其他內(nèi)容。實際上有成千上萬個類可供選擇,這允許程序員關(guān)注特定應(yīng)用程序的設(shè)計,而不是使其工作所需的基礎(chǔ)設(shè)施。

Java平臺API規(guī)范包含Java SE平臺提供的所有包、接口、類、字段和方法的完整清單,在瀏覽器中加載該頁面并將其添加到書簽,作為程序員,它將成為你最重要的參考文檔。

上一篇:常見問題(及其解決方案) 下一篇:變量

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/76445.html

相關(guān)文章

  • Java? 教程(目錄)

    Java? 教程 Java教程是為JDK 8編寫的,本頁面中描述的示例和實踐沒有利用在后續(xù)版本中引入的改進。 Java教程是希望使用Java編程語言創(chuàng)建應(yīng)用程序的程序員的實用指南,其中包括數(shù)百個完整的工作示例和數(shù)十個課程,相關(guān)課程組被組織成教程。 覆蓋基礎(chǔ)知識的路徑 這些教程以書籍的形式提供,如Java教程,第六版,前往Amazon.com購買。 入門 介紹Java技術(shù)和安裝Java開發(fā)軟件并使用...

    lifesimple 評論0 收藏0
  • 區(qū)塊鏈開發(fā)中使用的最流行的編程語言

    摘要:我們目前正處于一個新興的區(qū)塊鏈開發(fā)行業(yè)中。,一種在以太坊開發(fā)人員中流行的新的簡單編程語言,因為它是用于開發(fā)以太坊智能合約的語言。它是全球至少萬開發(fā)人員使用的世界上最流行的編程語言之一。以太坊,主要是針對工程師使用進行區(qū)塊鏈以太坊開發(fā)的詳解。 我們目前正處于一個新興的區(qū)塊鏈開發(fā)行業(yè)中。區(qū)塊鏈技術(shù)處于初期階段,然而這種顛覆性技術(shù)已經(jīng)成功地風(fēng)靡全球,并且最近經(jīng)歷了一場與眾不同的繁榮。由于許多...

    2shou 評論0 收藏0
  • 11個最值得Java開發(fā)者收藏的網(wǎng)站

    摘要:是領(lǐng)域最具代表性的問答網(wǎng)站之一。在,開發(fā)者能夠為各種相關(guān)的開源代碼貢獻自己的力量,也可以發(fā)布軟件開發(fā)項目。該網(wǎng)站發(fā)布各技術(shù)領(lǐng)域的高技術(shù)含量內(nèi)容,例如大數(shù)據(jù),云計算,,物聯(lián)網(wǎng),開發(fā)等。是一個大型的資源類網(wǎng)站,主要涉及源代碼和代碼示例。 Java是一種面向?qū)ο蟮木幊陶Z言,由Sun Microsystems公司在1995年的時候正式發(fā)布。直到今天,Java都一直是最受歡迎的編程語言之一。如今...

    WrBug 評論0 收藏0
  • Java入門請不要放棄,學(xué)習(xí)路線以及側(cè)重點分析

    摘要:而面向搜索引擎,就是我們要及時的使用百度谷歌遇到問題無法解決,先別急著放棄,可以去網(wǎng)絡(luò)尋找答案,你的坑大部分別人都已經(jīng)走過了,大部分都可以找到合適的解決方案。 showImg(https://segmentfault.com/img/remote/1460000019236352?w=866&h=456); 前言: ●眾多的語言,到底哪一門才是適合我的?●我們?yōu)槭裁匆獙W(xué)習(xí)Java語言呢...

    mochixuan 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<