成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

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

FuisonDesign / 587人閱讀

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

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

什么是對(duì)象?

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

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

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

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

以自行車為例:

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

將代碼打包到多帶帶的軟件對(duì)象中可以帶來(lái)很多好處,包括:

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

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

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

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

什么是類?

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

下面的Bicycle類是自行車的一種可能實(shí)現(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編程語(yǔ)言的語(yǔ)法對(duì)你來(lái)說(shuō)是全新的,但是這個(gè)類的設(shè)計(jì)是基于之前對(duì)自行車對(duì)象的討論,字段cadence、speed以及gear表示對(duì)象的狀態(tài),方法(changeCadence、changeGear、speedUp等)定義了它與外部世界的交互。

你可能已經(jīng)注意到,Bicycle類不包含main方法,那是因?yàn)樗皇且粋€(gè)完整的應(yīng)用程序;這只是在應(yīng)用程序中使用的自行車的藍(lán)圖,創(chuàng)建和使用新的Bicycle對(duì)象的職責(zé)屬于應(yīng)用程序中的其他類。

這里有一個(gè)BicycleDemo類,它創(chuàng)建兩個(gè)獨(dú)立的Bicycle對(duì)象并調(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();
    }
}

此測(cè)試的輸出打印兩輛自行車的cadence,speedgear

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

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

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

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

class MountainBike extends Bicycle {

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

}

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

什么是接口?

正如你已經(jīng)了解的,對(duì)象通過(guò)它們公開的方法定義它們與外部世界的交互,方法形成對(duì)象與外界的接口;例如,電視機(jī)前的按鈕是你和塑料外殼另一面的電線之間的接口,你按下“電源”按鈕,打開和關(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);
}

要實(shí)現(xiàn)這個(gè)接口,你的類的名稱將會(huì)改變(例如,對(duì)特定品牌的自行車,例如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);
    }
}

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

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

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

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

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

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

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/76445.html

相關(guān)文章

  • Java? 教程(目錄)

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

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

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

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

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

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

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

    mochixuan 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<