public class Admins implements Userinterface{
成都創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括姚安網(wǎng)站建設(shè)、姚安網(wǎng)站制作、姚安網(wǎng)頁制作以及姚安網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,姚安網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到姚安省份的部分城市,未來相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
private String name;
private String password;
private static int userNum;
public Admins() {
userNum ++;
}
public Admins(String name, String password) {
this.name = name;
this.password = password;
userNum ++;
}
public void setPassword(String password) {
this.password = password;
}
public String getPassword() {
return this.password;
}
public String toString() {
return "Total: " + Admins.userNum + "\nName: " + this.name + "\nPassword: " + this.password;
}
public static void main(String [] args) {
Userinterface [] users = new Userinterface[]{new Admins("jeryy", "11111"), new Admins("green", "123123")};
for(Userinterface u: users) {
System.out.println(u);
}
}
}
interface Userinterface{
public void setPassword(String password);
public String getPassword();
public String toString();
}
public class Bins{
public static void main(String [] args) {
int len = 10;
int [] dist = new int [len];
for(int i = 0; i dist.length; i ++) {
dist[i] = (int)(Math.random() * 100);
}
java.util.Arrays.sort(dist);
System.out.println("生成數(shù)組如下: ");
for(int i: dist) {
System.out.print(i + "\t");
}
java.util.Scanner san = new java.util.Scanner(System.in);
System.out.print("輸入要查找的數(shù): ");
int key = san.nextInt();
int res = Bins.binSearch(dist, key);
//System.out.println(res);
String info = (res =0 ) ? (key + ":" + res) : "查找失敗";
System.out.println(info);
}
public static int binSearch(int [] dist, int key) {
java.util.Arrays.sort(dist);
return java.util.Arrays.binarySearch(dist, key);
}
}
1、面向?qū)ο?/p>
面向?qū)ο螅∣bject Oriented)是一種新興的程序設(shè)計(jì)方法,或者是一種新的程序設(shè)計(jì)規(guī)范(paradigm),其基本思想是使用對(duì)象、類、繼承、封裝、多態(tài)等基本概念來進(jìn)行程序設(shè)計(jì)。從現(xiàn)實(shí)世界中客觀存在的事物(即對(duì)象)出發(fā)來構(gòu)造軟件系統(tǒng),并且在系統(tǒng)構(gòu)造中盡可能運(yùn)用人類的自然思維方式。
2、對(duì)象
對(duì)象是系統(tǒng)中用來描述客觀事物的一個(gè)實(shí)體,它是構(gòu)成系統(tǒng)的一個(gè)基本單位。一個(gè)對(duì)象由一組屬性和對(duì)這組屬性進(jìn)行操作的一組服務(wù)組成。
類的實(shí)例化可生成對(duì)象,一個(gè)對(duì)象的生命周期包括三個(gè)階段:生成、使用、消除。
當(dāng)不存在對(duì)一個(gè)對(duì)象的引用時(shí),該對(duì)象成為一個(gè)無用對(duì)象。Java的垃圾收集器自動(dòng)掃描對(duì)象的動(dòng)態(tài)內(nèi)存區(qū),把沒有引用的對(duì)象作為垃圾收集起來并釋放。當(dāng)系統(tǒng)內(nèi)存用盡或調(diào)用System.gc( )要求垃圾回收時(shí),垃圾回收線程與系統(tǒng)同步運(yùn)行。
3、類
類是具有相同屬性和方法的一組對(duì)象的集合,它為屬于該類的所有對(duì)象提供了統(tǒng)一的抽象描述,其內(nèi)部包括屬性和方法兩個(gè)主要部分。在面向?qū)ο蟮木幊陶Z言中,類是一個(gè)獨(dú)立的程序單位,它應(yīng)該有一個(gè)類名并包括屬性和方法兩個(gè)主要部分。
Java中的類實(shí)現(xiàn)包括兩個(gè)部分:類聲明和類體。
類聲明
其中,修飾符public,abstract,final 說明了類的屬性,className為類名,superclassName為類的父類的名字,interfaceNameList為類所實(shí)現(xiàn)的接口列表。
類體
成員變量限定詞的含義:
static: 靜態(tài)變量(類變量)
final: 常量;transient: 暫時(shí)性變量,用于對(duì)象存檔,用于對(duì)象的串行化
volatile: 貢獻(xiàn)變量,用于并發(fā)線程的共享
方法的實(shí)現(xiàn)也包括兩部分內(nèi)容:方法聲明和方法體。
方法聲明
方法聲明中的限定詞的含義:
static: 類方法,可通過類名直接調(diào)用
abstract: 抽象方法,沒有方法體
final: 方法不能被重寫
native: 集成其它語言的代碼
synchronized: 控制多個(gè)并發(fā)線程的訪問
方法聲明包括方法名、返回類型和外部參數(shù)。其中參數(shù)的類型可以是簡單數(shù)據(jù)類型,也可以是復(fù)合數(shù)據(jù)類型(又稱引用數(shù)據(jù)類型)。
對(duì)于簡單數(shù)據(jù)類型來說,java實(shí)現(xiàn)的是值傳遞,方法接收參數(shù)的值,但不能改變這些參數(shù)的值。如果要改變參數(shù)的值,則用引用數(shù)據(jù)類型,因?yàn)橐脭?shù)據(jù)類型傳遞給方法的是數(shù)據(jù)在內(nèi)存中的地址,方法中對(duì)數(shù)據(jù)的操作可以改變數(shù)據(jù)的值。
方法體
方法體是對(duì)方法的實(shí)現(xiàn),它包括局部變量的聲明以及所有合法的Java指令。方法體中聲明的局部變量的作用域在該方法內(nèi)部。若局部變量與類的成員變量同名,則類的成員變量被隱藏。
為了區(qū)別參數(shù)和類的成員變量,我們必須使用this。this用在一個(gè)方法中引用當(dāng)前對(duì)象,它的值是調(diào)用該方法的對(duì)象。返回值須與返回類型一致,或者完全相同,或是其子類。當(dāng)返回類型是接口時(shí),返回值必須實(shí)現(xiàn)該接口。
構(gòu)造方法
構(gòu)造方法是一個(gè)特殊的方法。Java 中的每個(gè)類都有構(gòu)造方法,用來初始化該類的一個(gè)對(duì)象。
構(gòu)造方法具有和類名相同的名稱,而且不返回任何數(shù)據(jù)類型。
重載經(jīng)常用于構(gòu)造方法。
構(gòu)造方法只能由new運(yùn)算符調(diào)用
4、面向?qū)ο蟮幕咎匦?/p>
封裝
封裝性就是盡可能的隱藏對(duì)象內(nèi)部細(xì)節(jié),對(duì)外形成一道邊界,只保留有限的接口和方法與外界進(jìn)行交互。封裝的原則是使對(duì)象以外的部分不能隨意的訪問和操作對(duì)象的內(nèi)部屬性,從而避免了外界對(duì)對(duì)象內(nèi)部屬性的破壞。
可以通過對(duì)類的成員設(shè)置一定的訪問權(quán)限,實(shí)現(xiàn)類中成員的信息隱藏。
private:類中限定為private的成員,只能被這個(gè)類本身訪問。如果一個(gè)類的構(gòu)造方法聲明為private,則其它類不能生成該類的一個(gè)實(shí)例。
default:類中不加任何訪問權(quán)限限定的成員屬于缺省的(default)訪問狀態(tài),可以被這個(gè)類本身和同一個(gè)包中的類所訪問。
protected:類中限定為protected的成員,可以被這個(gè)類本身、它的子類(包括同一個(gè)包中以及不同包中的子類)和同一個(gè)包中的所有其他的類訪問。
public:類中限定為public的成員,可以被所有的類訪問。
繼承
子類的對(duì)象擁有父類的全部屬性與方法,稱作子類對(duì)父類的繼承。
Java中父類可以擁有多個(gè)子類,但是子類只能繼承一個(gè)父類,稱為單繼承。
繼承實(shí)現(xiàn)了代碼的復(fù)用。
Java中所有的類都是通過直接或間接地繼承java.lang.Object類得到的。
子類不能繼承父類中訪問權(quán)限為private的成員變量和方法。
子類可以重寫父類的方法,即命名與父類同名的成員變量。
Java中通過super來實(shí)現(xiàn)對(duì)父類成員的訪問,super用來引用當(dāng)前對(duì)象的父類。super 的使用有三種情況:
訪問父類被隱藏的成員變量,如:super.variable;
調(diào)用父類中被重寫的方法,如:super.Method([paramlist]),super()調(diào)用父類構(gòu)造方法;
調(diào)用父類的構(gòu)造函數(shù),如:super([paramlist]);
多態(tài)
對(duì)象的多態(tài)性是指在父類中定義的屬性或方法被子類繼承之后,可以具有不同的數(shù)據(jù)類型或表現(xiàn)出不同的行為。這使得同一個(gè)屬性或方法在父類及其各個(gè)子類中具有不同的語義。例如:"幾何圖形"的"繪圖"方法,"橢圓"和"多邊形"都是"幾何圖"的子類,其"繪圖"方法功能不同。
Java的多態(tài)性體現(xiàn)在兩個(gè)方面:由方法重載實(shí)現(xiàn)的靜態(tài)多態(tài)性(編譯時(shí)多態(tài))和方法重寫實(shí)現(xiàn)的動(dòng)態(tài)多態(tài)性(運(yùn)行時(shí)多態(tài))。
編譯時(shí)多態(tài):在編譯階段,具體調(diào)用哪個(gè)被重載的方法,編譯器會(huì)根據(jù)參數(shù)的不同來靜態(tài)確定調(diào)用相應(yīng)的方法。
運(yùn)行時(shí)多態(tài):由于子類繼承了父類所有的屬性(私有的除外),所以子類對(duì)象可以作為父類對(duì)象使用。程序中凡是使用父類對(duì)象的地方,都可以用子類對(duì)象來代替。一個(gè)對(duì)象可以通過引用子類的實(shí)例來調(diào)用子類的方法。
重載(Overloading)
方法重載是讓類以統(tǒng)一的方式處理不同數(shù)據(jù)類型的手段。
一個(gè)類中可以創(chuàng)建多個(gè)方法,它們具有相同的名字,但具有不同的參數(shù)和不同的定義。調(diào)用方法時(shí)通過傳遞給它們的不同參數(shù)個(gè)數(shù)和參數(shù)類型來決定具體使用哪個(gè)方法。
返回值類型可以相同也可以不相同,無法以返回型別作為重載函數(shù)的區(qū)分標(biāo)準(zhǔn)。
重寫(Overriding)
子類對(duì)父類的方法進(jìn)行重新編寫。如果在子類中的方法與其父類有相同的的方法名、返回類型和參數(shù)表,我們說該方法被重寫 (Overriding)。
如需父類中原有的方法,可使用super關(guān)鍵字,該關(guān)鍵字引用了當(dāng)前類的父類。
子類函數(shù)的訪問修飾權(quán)限不能低于父類的。
從現(xiàn)實(shí)世界中客觀存在的事物(即對(duì)象)出發(fā)來構(gòu)造軟件系統(tǒng),并在系統(tǒng)構(gòu)造中盡可能運(yùn)用人類的自然思維方式,強(qiáng)調(diào)直接以問題域(現(xiàn)實(shí)世界)中的事物為中心來思考問題,認(rèn)識(shí)問題,并根據(jù)這些事物的本質(zhì)特點(diǎn),把它們抽象地表示為系統(tǒng)中的對(duì)象,作為系統(tǒng)的基本構(gòu)成單位(而不是用一些與現(xiàn)實(shí)世界中的事物相關(guān)比較遠(yuǎn),并且沒有對(duì)應(yīng)關(guān)系的其它概念來構(gòu)造系統(tǒng))。這可以使系統(tǒng)直接地映射問題域,保持問題域中事物及其相互關(guān)系的本來面貌。
它可以有不同層次的理解:
從世界觀的角度可以認(rèn)為:面向?qū)ο蟮幕菊軐W(xué)是認(rèn)為世界是由各種各樣具有自己的運(yùn)動(dòng)規(guī)律和內(nèi)部狀態(tài)的對(duì)象所組成的;不同對(duì)象之間的相互作用和通訊構(gòu)成了完整的現(xiàn)實(shí)世界。因此,人們應(yīng)當(dāng)按照現(xiàn)實(shí)世界這個(gè)本來面貌來理解世界,直接通過對(duì)象及其相互關(guān)系來反映世界。這樣建立起來的系統(tǒng)才能符合現(xiàn)實(shí)世界的本來面目。
從方法學(xué)的角度可以認(rèn)為:面向?qū)ο蟮姆椒ㄊ敲嫦驅(qū)ο蟮氖澜缬^在開發(fā)方法中的直接運(yùn)用。它強(qiáng)調(diào)系統(tǒng)的結(jié)構(gòu)應(yīng)該直接與現(xiàn)實(shí)世界的結(jié)構(gòu)相對(duì)應(yīng),應(yīng)該圍繞現(xiàn)實(shí)世界中的對(duì)象來構(gòu)造系統(tǒng),而不是圍繞功能來構(gòu)造系統(tǒng)。
從程序設(shè)計(jì)的角度來看,面向?qū)ο蟮某绦蛟O(shè)計(jì)語言必須有描述對(duì)象及其相互之間關(guān)系的語言成分。這些程序設(shè)計(jì)語言可以歸納為以下幾類:系統(tǒng)中一切皆為對(duì)象;對(duì)象是屬性及其操作的封裝體;對(duì)象可按其性質(zhì)劃分為類,對(duì)象成為類的實(shí)例;實(shí)例關(guān)系和繼承關(guān)系是對(duì)象之間的靜態(tài)關(guān)系;消息傳遞是對(duì)象之間動(dòng)態(tài)聯(lián)系的唯一形式,也是計(jì)算的唯一形式;方法是消息的序列。
面向?qū)ο?/p>
面向?qū)ο?Object
Oriented,OO)是當(dāng)前計(jì)算機(jī)界關(guān)心的重點(diǎn),它是90年代軟件開發(fā)方法的主流。面向?qū)ο蟮母拍詈蛻?yīng)用已超越了程序設(shè)計(jì)和軟件開發(fā),擴(kuò)展到很寬的范圍。如數(shù)據(jù)庫系統(tǒng)、交互式界面、應(yīng)用結(jié)構(gòu)、應(yīng)用平臺(tái)、分布式系統(tǒng)、網(wǎng)絡(luò)管理結(jié)構(gòu)、CAD技術(shù)、人工智能等領(lǐng)域。
談到面向?qū)ο?,這方面的文章非常多。但是,明確地給出對(duì)象的定義或說明對(duì)象的定義的非常少——至少我現(xiàn)在還沒有發(fā)現(xiàn)。其初,“面向?qū)ο蟆笔菍V冈诔绦蛟O(shè)計(jì)中采用封裝、繼承、抽象等設(shè)計(jì)方法??墒牵@個(gè)定義顯然不能再適合現(xiàn)在情況。面向?qū)ο蟮乃枷胍呀?jīng)涉及到軟件開發(fā)的各個(gè)方面。如,面向?qū)ο蟮姆治觯∣OA,Object
Oriented
Analysis),面向?qū)ο蟮脑O(shè)計(jì)(OOD,Object
Oriented
Design)、以及我們經(jīng)常說的面向?qū)ο蟮木幊虒?shí)現(xiàn)(OOP,Object
Oriented
Programming)。許多有關(guān)面向?qū)ο蟮奈恼露贾皇侵v述在面向?qū)ο蟮拈_發(fā)中所需要注意的問題或所采用的比較好的設(shè)計(jì)方法??催@些文章只有真正懂得什么是對(duì)象,什么是面向?qū)ο?,才能最大程度地?duì)自己有所裨益。這一點(diǎn),恐怕對(duì)初學(xué)者甚至是從事相關(guān)工作多年的人員也會(huì)對(duì)它們的概念模糊不清。
面向?qū)ο笫钱?dāng)前計(jì)算機(jī)界關(guān)心的重點(diǎn),它是90年代軟件開發(fā)方法的主流。面向?qū)ο蟮母拍詈蛻?yīng)用已超越了程序設(shè)計(jì)和軟件開發(fā),擴(kuò)展到很寬的范圍。如數(shù)據(jù)庫系統(tǒng)、交互式界面、應(yīng)用結(jié)構(gòu)、應(yīng)用平臺(tái)、分布式系統(tǒng)、網(wǎng)絡(luò)管理結(jié)構(gòu)、CAD技術(shù)、人工智能等領(lǐng)域。
C++,C#,JAVA都由C衍生而來!
C++,C#,JAVA,C都是面向過程的
Visual
C++,Visal
C#,Visual
JAVA是面向?qū)ο蟮?/p>
.NET是微軟的一種架構(gòu),相應(yīng)的有C#.NET,VB.NET等
對(duì)于結(jié)構(gòu)化,是指編程語言的結(jié)構(gòu)體系
結(jié)構(gòu)化語言就是將自然語言加上程序設(shè)計(jì)語言的控制結(jié)構(gòu)就成了結(jié)構(gòu)化語言,專門用來描述加工邏輯。所以,它既有自然語言靈活性強(qiáng)、表達(dá)豐富的特點(diǎn),又有結(jié)構(gòu)化程序的清晰易讀和邏輯嚴(yán)密的特點(diǎn)。
結(jié)構(gòu)化語言的顯著特征是代碼和數(shù)據(jù)的分離。
標(biāo)題名稱:java面向?qū)ο蟠a結(jié)構(gòu) java面向?qū)ο缶幊虒?shí)例
本文網(wǎng)址:http://muchs.cn/article18/dojhjdp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、標(biāo)簽優(yōu)化、自適應(yīng)網(wǎng)站、虛擬主機(jī)、關(guān)鍵詞優(yōu)化、網(wǎng)頁設(shè)計(jì)公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)