日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

面像对象(上)

發布時間:2024/9/5 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 面像对象(上) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、面向對象(OOP):

Object Oriented Programming? ? ? ? (Oriented:['??r?ent?d])

面向對象的三大特性:封裝、繼承、多肽。

?

?

二、類和對象:

類和對象是面向對象編程中兩個重要概念;

類(class)和對象(object,也被稱為實例,instance),類用于描述客觀世界里某一類對象的共同特性,而對象則是類的具體存在;

類可被認為是一種自定義的數據類型,可以使用類來定義變量,所有使用類定義的變量都是引用變量,它們將會引用類的對象;

?

1、類:

?

類包含三種常見的成員:構造器、成員變量和方法;

構造器:用于構造該類的實例,java通過new關鍵字來調用構造器,從而返回該類的實例;

成員變量:狀態數據;

方法:該類或者該類實例的行為特征或者功能實現;

?

1.1 成員變量:

語法格式:

[修飾符] 類型 成員變量名 [=默認值];

?

修飾符:可以省略,也可以是public、protected、private、static、final,其中public、protected、private只能出現其中的一個,可以與static、final組合起來修飾成員變量;

static:static修飾的成員表明它屬于這個類本身,而不屬于這個類的單個實例,通常把static修飾的成員變量和成員方法稱為類變量和類方法。不使用static修飾的成員變量和方法稱為實例變量,實例方法。靜態成員不能直接訪問非靜態成員。

?

1.2 成員方法:

? ? ? ? 語法格式:

[修飾符]? 方法返回值類型 方法名(形參列表)

{

? ? //方法體

}

?

1.3?構造器:

語法格式:

[修飾符]? 構造器名(形參列表)

{

? ? //方法體

}

?

構造器名必須和類名相同;

類中沒有定義構造器,系統將會為它提供一個默認的無參構造器;

?

2、對象的產生與使用

?

2.1 創建對象

創建對象的根本途徑是構造器,通過new關鍵字來調用某個類的構造器來創建這個類的實例;

?

//調用Person的構造器創建了一個Person實例

//將Person實例賦值給p變量

Person p = new Person();

?

在這行代碼中實際產生了兩個東西:一個是p變量(引用變量),一個是Person對象,p變量存放在棧內存中,指向實際的Person對象,而真正的Person對象則存放在堆(heap)內存中。從這個角度來看,引用變量和c語言里的指針很像,它們都是存儲一個地址值,通過這個地址來引用到實際對象。

?

java程序不允許直接訪問堆內存中的對象,只能通過該對象的引用操作該對象。當訪問p引用變量的成員變量和方法時,實際上是訪問p所引用的對象的成員變量和方法。

?

//堆內存里的對象可以有多個引用

//將p變量的值賦值給p1變量

Person p1 = p;

?

上面代碼把p變量的值賦予給p1變量,就是將p變量保存的地址賦值給p1變量,這樣p1和p就指向了同一個Person對象。p1和p訪問Person對象的成員變量和方法時,將返回同樣的結果。

?

如果堆內存里的對象沒有任何變量指向該Person對象,那么程序將無法訪問到該對象,這個對象也就變成了垃圾,java的垃圾回收機制將回收該對象,釋放該對象占所占用的內存區。

?

?

2.2 對象的使用:

?

static修飾的成員變量和方法,可以通過類來調用,也可以通過實例來調用;沒有static修改的成員變量和方法必須通過實例來調用。?

?

類.成員變量|方法

實例.成員變量|方法

?

3、this關鍵字的使用?

?

this關鍵字總是指向調用該方法的對象;

this關鍵字的最大作用就是讓類中的一個方法,訪問該類中的另外一個方法或者實例變量;

static修飾的方法中不能使用this關鍵字,static修飾的方法不能訪問不使用static修飾的普通成員;

?

示例:定義一個Dog類,這個Dog對象的run()方法需要調用它的jump()方法,該如何實現

?

Dog類:

public class Dog {public void jump(){System.out.println("jump");}public void run(){Dog d = new Dog();d.jump();System.out.println("run");}}

?

DogTest:

public class DogTest {public static void main(String[] args) {Dog dog = new Dog();dog.run();}}

?

使用this關鍵字,簡化代碼:

?

this可以代表任何對象,當this出現在某個方法體中時,它所代表的對象是不確定的,但它所代表的類型是確定的,它所代表的對象只能是當前類,只有當這個方法調用時,它所代表的對象才被確定下來,誰在調用這個方法,this就代表誰。

?

Dog類:

public class Dog {public void jump(){System.out.println("jump");}public void run(){//Dog d = new Dog();//d.jump();//this也可以省略,直接是jump()this.jump();System.out.println("run");}}

?

DogTest(不需要做修改):

public class DogTest {public static void main(String[] args) {Dog dog = new Dog();dog.run();}}

?

4、方法詳解:

?

4.1 方法的傳參機制:值傳遞

public class PrimitiveTransferTest {public static void swap(int a,int b){int temp = a;a = b;b = temp;System.out.println("swap方法里,a的值是"+a+";b的值是"+b);}public static void main(String[] args) {int a = 6;int b = 9;swap(a,b); // swap方法里,a的值是9;b的值是6System.out.println("交換結束后,變量a的值是"+a+";b的值是:"+b); // 交換結束后,變量a的值是6;b的值是:9 } }

?

4.2 遞歸方法

?

?

轉載于:https://www.cnblogs.com/aibaiyang/p/9191484.html

總結

以上是生活随笔為你收集整理的面像对象(上)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。