溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

什么是java的面向?qū)ο?/h1>
發(fā)布時(shí)間:2020-07-16 11:44:45 來(lái)源:億速云 閱讀:142 作者:Leah 欄目:編程語(yǔ)言

這篇文章將為大家詳細(xì)講解有關(guān)什么是java的面向?qū)ο?,文章?nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

1、什么叫面向?qū)ο螅?/strong>

面向?qū)ο?Object-Oriented,簡(jiǎn)稱OO)就是一種常見的程序結(jié)構(gòu)設(shè)計(jì)方法。
面向?qū)ο笏枷氲幕A(chǔ)是將相關(guān)的數(shù)據(jù)和方法放在一起,組合成一種新的復(fù)合數(shù)據(jù)類型,然后使用新創(chuàng)建的復(fù)合數(shù)據(jù)類型作為項(xiàng)目的基礎(chǔ)。

面向?qū)ο笫且粋€(gè)很抽象的概念,它相對(duì)面向過(guò)程而言。

過(guò)程與對(duì)象都是一種解決問(wèn)題的思想。

面向過(guò)程:強(qiáng)調(diào)的是功能行為,一種過(guò)程,先干啥,再干啥;

面向?qū)ο螅簩⒐δ芊庋b到對(duì)象里,強(qiáng)調(diào)的是具備某功能的對(duì)象;

按照面向?qū)ο蟮乃枷?,可以把任何的東西看做對(duì)象!

面向?qū)ο蟮娜齻€(gè)特征:

封裝(Encapsulation);

繼承(Inheritance);

多態(tài)(Polymorphism)。

我的總結(jié):

面向過(guò)程:強(qiáng)調(diào)的是具體的功能實(shí)現(xiàn);(執(zhí)行者)

面向?qū)ο螅簭?qiáng)調(diào)的是具備功能的對(duì)象。(管理者)

2、類

類(class)是Java 語(yǔ)言的最小編程單位,也是設(shè)計(jì)和實(shí)現(xiàn)Java 程序的基礎(chǔ),本部分將深入介紹類的相關(guān)知識(shí)。
類的概念
類是一組事物共有特征和功能的描述。類是對(duì)于一組事物的總體描述,是按照面向?qū)ο蠹夹g(shù)進(jìn)行設(shè)計(jì)時(shí)最小的單位,也是組成項(xiàng)目的最基本的模塊。類的概念是抽象的,類似于建筑設(shè)計(jì)中的圖紙,是對(duì)于現(xiàn)實(shí)需要代表的具體內(nèi)容的抽象。類只包含框架結(jié)構(gòu),而不包含具體的數(shù)據(jù)。所以類代表的是總體,而不代表某個(gè)特定的個(gè)體。

我的總結(jié):類是抽象的,對(duì)象是具體的,實(shí)實(shí)在在的!

類的定義:

[修飾符] class  類名{

1~n個(gè)構(gòu)造方法;

0~n個(gè)字段;

0~n個(gè)方法

}

定義類,其實(shí)就是定義類里面的對(duì)象

對(duì)象包含:

狀態(tài);(屬性)

功能、行為;(方法)

通過(guò)類來(lái)描述對(duì)象;

狀態(tài)--------成員變量;

功能、行為——方法;

Eg

class Person{
//屬性
   private String name;
   private int age;
   private int sal;
   //方法
   public void show(){
      System.out.println("個(gè)人情況:"+name+age+sal);
   }
}

3、構(gòu)造方法

構(gòu)造方法:用來(lái)構(gòu)造類的實(shí)例(每一個(gè)類都默認(rèn)有一個(gè)無(wú)參的構(gòu)造方法,得使用new調(diào)用)

字段:類或?qū)ο笏臄?shù)據(jù),對(duì)類狀態(tài)的一種描述;

方法:類或?qū)ο蟮奶卣骰蛐袨?/p>

作用:

給類中的字段進(jìn)行初始化,可以用來(lái)創(chuàng)建對(duì)象。

特點(diǎn):

方法名與類名相同

不用定義返回值類型

不需要寫return語(yǔ)句

注意

默認(rèn)構(gòu)造方法的特點(diǎn)。

多個(gè)構(gòu)造方法是以重載的形式存在的。

構(gòu)造方法的重載:(需要哪個(gè)就去適配哪個(gè),調(diào)用哪個(gè))

this([實(shí)參]);調(diào)用當(dāng)前類的構(gòu)造方法

注意: this([實(shí)參]);必須放在構(gòu)造器的第一行;

對(duì)象的產(chǎn)生格式

類名稱  對(duì)象名 = new  類名稱();

因?yàn)橛?),所以是方法,實(shí)際上它就是構(gòu)造方法,并且是非私有的構(gòu)造方法。

如:

CellPhone cp = new CellPhone();
Eg:
 
class Person{
 
   private String name;
 
   private int age;
 
   private int sal;
 
   public void show(){
 
      System.out.println("個(gè)人情況:"+name+age+sal);
 
   }
 
 
 
   public Person(String name) {
 
      super();
 
      this.name = name;
 
   }
 
 
 
   public Person(String name, int age) {
 
      super();
 
      this.name = name;
 
      this.age = age;
 
   }
 
 
 
   public Person(String name, int age, int sal) {
 
      super();
 
      this.name = name;
 
      this.age = age;
 
      this.sal = sal;
 
   }
 
}

4、static關(guān)鍵字

特點(diǎn):

隨著類的加載而加載

優(yōu)先于對(duì)象存在

被所有對(duì)象所共享

可以直接被類名調(diào)用

使用注意

靜態(tài)方法只能訪問(wèn)靜態(tài)成員

但是非靜態(tài)成員方法可以訪問(wèn)靜態(tài)成員;

靜態(tài)方法中不可以使用this,super關(guān)鍵字

主方法(main)是靜態(tài)的(可以利用類名去調(diào)用靜態(tài)的main方法,很正常!但是會(huì)陷入死循環(huán),導(dǎo)致內(nèi)存溢出,jvm自動(dòng)停止?。?/p>

public static void main(String[] agrs){}

可修飾字段,方法。

用static 修飾的成員表示它屬于這個(gè)類共有,而不是屬于該類的單個(gè)實(shí)例。

static 修飾的字段 == 類字段

static 修飾的方法 == 類方法

沒使用static修飾的字段和方法,成員屬于類的單個(gè)實(shí)例,不屬于類。

沒有static 修飾的字段 == 實(shí)例字段

沒有static 修飾的方法 == 實(shí)例方法

類和實(shí)例訪問(wèn)字段和方法的語(yǔ)法:

訪問(wèn)類成員:        類.字段     類.方法

訪問(wèn)實(shí)例成員:    實(shí)例.字段          實(shí)例.方法

我的總結(jié)

static 修飾的字段和方法,既可以通過(guò)類調(diào)用,也可以使用實(shí)例調(diào)用;

沒static 修飾的字段和方法,只能使用實(shí)例來(lái)調(diào)用(建議使用:類名來(lái)調(diào)用;        其實(shí)在底層,對(duì)象調(diào)用類成員,也會(huì)轉(zhuǎn)換類名調(diào)用)

static關(guān)鍵字不能與this,super同時(shí)連用!

5、匿名對(duì)象

一個(gè)沒有名字的對(duì)象,  創(chuàng)建了一個(gè)對(duì)象出來(lái),沒有賦給一個(gè)變量;

特點(diǎn):

對(duì)方法或字段只進(jìn)行一次調(diào)用時(shí);

可作為實(shí)際參數(shù)進(jìn)行傳遞;

只在堆里面開辟存儲(chǔ)區(qū)域,

只能使用一次,  使用完就被銷毀了;

何時(shí)使用?只拿來(lái)用一次!!

new Person();表示匿名對(duì)象,沒有名字的對(duì)象

new Person().age = 17;//使用一次之后就被銷毀了

6、this關(guān)鍵字

特點(diǎn):this表示當(dāng)前對(duì)象。

當(dāng)前對(duì)象  ←→  當(dāng)前正在調(diào)用實(shí)例成員的對(duì)象

換言之:誰(shuí)調(diào)用了方法,誰(shuí)就是當(dāng)前對(duì)象。

什么時(shí)候使用this關(guān)鍵字呢?

方法間的相互調(diào)用;

this.字段;

構(gòu)造器中相互調(diào)用,但是此時(shí)this([參數(shù)])必須寫在構(gòu)造方法第一行。

this不能用在static修飾的方法里和static修飾的代碼塊里;

Eg:構(gòu)造方法中的this.name = name;

7、面向?qū)ο笾庋b

封裝的兩個(gè)含義:

1.把對(duì)象的狀態(tài)和行為看成一個(gè)統(tǒng)一的整體,將二者存放在一個(gè)獨(dú)立的模塊中(類);

2."信息隱藏", 把不需要讓外界知道的信息隱藏起來(lái),盡可能隱藏對(duì)象功能實(shí)現(xiàn)細(xì)節(jié),字段;

封裝機(jī)制在程序中的體現(xiàn)是:

把描述對(duì)象的狀態(tài)用字段表示,描述對(duì)象的行為用方法表示,把字段和方法定義在一個(gè)類中,并保證外界不能任意更改其內(nèi)部的字段值,也不允許任意調(diào)動(dòng)其內(nèi)部的功能方法。

程序中的一種體現(xiàn):

通常將類中的成員變量私有化(private),通過(guò)對(duì)外提供方法(setXxx,getXxx),可對(duì)該變量(xxx)進(jìn)行訪問(wèn)。

boolean 類型的變量沒有g(shù)etXX,只有 isXX;

 Eg:
 
class Person1{
 
   private String name;
 
   private int age;
 
   private int sal;
 
  
 
   public String getName() {
 
      return name;
 
   }
 
 
 
   public void setName(String name) {
 
      this.name = name;
 
   }
 
 
 
   public int getAge() {
 
      return age;
 
   }
 
 
 
   public void setAge(int age) {
 
      this.age = age;
 
   }
 
}

8、訪問(wèn)修飾符

private 類訪問(wèn)權(quán)限:本類內(nèi)部可以訪問(wèn),不能繼承到子類;

default 什么都不寫,包訪問(wèn)權(quán)限:本類內(nèi)部可以訪問(wèn),同包其他類也可以訪問(wèn),同包可繼承;

protected 子類訪問(wèn)權(quán)限:本類內(nèi)部可以訪問(wèn),不同包的子類也可以訪問(wèn),同包其他類也可以訪問(wèn),能繼承到子類;

public 公共訪問(wèn)權(quán)限:任何地方都可以訪問(wèn),能繼承到子類;

總結(jié):

什么是java的面向?qū)ο?></p><p><strong><span>9、類的設(shè)計(jì)分析</span></strong></p><p>分析思路:</p><p>根據(jù)要求寫出類所包含的字段;</p><p>所有的字段都必須私有化;</p><p>封裝之后的字段可通過(guò)setter和getter設(shè)值和取得;</p><p>按需求可添加若干構(gòu)造方法;</p><p>根據(jù)需求可添加相應(yīng)的方法;</p><p>類中的所有方法都不要直接處理(輸出打印),而是交給調(diào)用者去處理。</p><p><strong>10、面向?qū)ο笾^承<span> </span></strong></p><p>首先有反映一般事物特性的類,然后在此基礎(chǔ)上反映出特殊事物的類;</p><p>也就是說(shuō):繼承是一種從一般到特殊的關(guān)系;</p><p><strong>特點(diǎn)</strong>:</p><p>1、提高了代碼的復(fù)用性。</p><p>2、讓類與類之間產(chǎn)生關(guān)系,有了這個(gè)繼承關(guān)系才有了多態(tài)的特性。</p><p>3、Java語(yǔ)言中只支持單繼承(有別于C語(yǔ)言)。</p><p>因?yàn)槎嗬^承容易帶來(lái)安全隱患(父類多了, 功能相同的話,就會(huì)出現(xiàn)調(diào)用不確定性嗎,覆寫一個(gè)方法,到底覆寫的誰(shuí)的?)。</p><p><strong>ps:接口可以實(shí)現(xiàn)多繼承</strong></p><p>4、Java支持多層繼承,object是每個(gè)類的超類,實(shí)現(xiàn)樹形結(jié)構(gòu)。</p><p>我的總結(jié):</p><p>繼承是多態(tài)的前提。</p><p>對(duì)類而言,只支持單繼承。</p><p>格式:</p><p>[修飾符] class SubClass extends SuperClass</p><p><span>按照這種關(guān)系,我們把SuperClass類稱為父類或基類,把SubClass稱為子類或派生類或拓展類;</span><br/></p><p>我的總結(jié):</p><p>java.lang.Object是所有類的父類,</p><p>Object要么是直接父類要么是間接父類。</p><p>Eg:</p><p>學(xué)生屬于人的一種特殊情況,此時(shí)我把人的共性寫在Person類里面,為了讓學(xué)生擁有這些共性(別的比如老師也可以有這些共性),然后我就讓學(xué)生來(lái)拓展Person類。</p><p>我的總結(jié):</p><p>子類與父類的關(guān)系:</p><p>子類拓展父類(子類是父類的一種特殊情況)</p><p>主要是以父類為基礎(chǔ),然后添加屬于自己的字段和方法。</p><p>父類的私有成員子類不能繼承到;</p><p>父類的構(gòu)造方法不能被繼承;</p><p>Java只支持單繼承,不支持多繼承;//不然的話,比如show方法,繼承了多個(gè),不知道到底調(diào)用那一個(gè)。</p><p>一個(gè)類有且只有一個(gè)直接父類;</p><p>一個(gè)類沒顯示的繼承其他的一個(gè)類的時(shí)候,默認(rèn)的直接父類就是Object類;</p><p>Student 的直接父類是Person,Object類也是Student類的父類,但是是間接父類;</p><p>一旦一個(gè)類顯示的繼承了其他的一個(gè)類的時(shí)候,此時(shí)默認(rèn)的直接父類Object就會(huì)被取消;</p><p>Java里一個(gè)類只能有一個(gè)直接父類;</p><p>java.lang.Object是所有類的父類,Object要么是直接父類要么是間接父類。</p><p>子類對(duì)象實(shí)例化過(guò)程</p><p>在繼承操作中,對(duì)于子類對(duì)象的實(shí)例化:</p><p>子類對(duì)象在實(shí)例化之前必須首先調(diào)用父類中的構(gòu)造方法之后再調(diào)用自身的構(gòu)造方法。</p><p class=關(guān)于什么是java的面向?qū)ο缶头窒淼竭@里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問(wèn)一下細(xì)節(jié)
AI