亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

Java基礎(五)OOP面向對象之(二) 面向對象思想綜述

2019-11-06 06:56:04
字體:
來源:轉載
供稿:網友

java基礎(五)OOP面向對象之(二) 面向對象思想綜述

1. OOP中的基本概念

Java語言是面向對象的,采用這種語言進行編程稱為面向對象編程(Object-Oriented PRogramming, OOP)。它允許設計者將面向對象設計實現為一個可運行的系統。Java的編程單位為類,對象需要通過類進行實例化(即創建)。

面向對象的編程有三大特性:封裝、繼承和多態。

封裝:以前我講過java是以類為基礎的,所有的屬性和方法都是封裝在類中的,不像C++在類外還可以定義函數。多態:表面看是多種狀態的意思。(這里先不過多討論,下面會詳細討論)繼承:不容置疑,從父親那里繼承什么家產、金錢或者產業什么的,運用到我們java中又是怎么回事呢?它又繼承哪些東東呢?

接下來我們就要對這三個特性進行詳細的分析,那么在java中我們一切是以類為基礎,當然這三個特性跟類是分不開的,那我們認識下java中的類。

2. 抽象數據類型(類就是模板)

在C語言中,我們可以用struct 來表示一個類,不了解也不要緊。在java中,我們用class 這個關鍵字來表示一個類,類是一個抽象的數據類型,那怎么抽象法呢?(思考一下我們之前講過的java中的類是怎么來的,類是具有相同屬性類型和行為的集合)

3. 類和對象

面向對象的開發方法把軟件系統看成各種對象的集合,對象就是最小的子系統,一組相關的對象能夠組合成更復雜的子系統。面向對象的開發方法將軟件系統看成各種對象的集合,接近人的自然思維方式。

對象是對問題領域中事件的抽象。對象具有以下特性:

萬物皆為對象。問題領域中的實體和概念都可以抽象為對象。例如學生,成績單、教師、課和教室。每個對象都是惟一的。正如世界上不存在一模一樣的數子(或者人)。

對象具有屬性和行為。

例如小張,性別女,年齡22,身高1.6m, 體重40kg, 能夠學習,唱歌。小張的屬性包括姓名、性別、年齡、身高和體重,行為包括學習、唱歌。

例如一部手機,牌子是諾基亞、價格是2000元,銀白色,能夠拍照、打電話和收發短信等。這部手機的屬性包括品牌類型type、價格price和顏色color,行為包括拍照takePhoto(),打電話call(),收發短信receiveMessage()和發短信sendMessage().

對象具有狀態。狀態是指某個瞬間對象的各個屬性的取值。對象的某些行為會改變對象自身的狀態,即屬性的取值。

例如小張本來體重為40kg,經為減肥后,體重減到45kg.

肥胖狀態: 40kg | | 減肥行為 | 肥胖狀態: 35kg

每個對象都是某個類的實例。小張和小王都屬于學生類、中國和美國都屬于國家類、中文和英文都屬于語言類。

類是具有相同屬性和行為的對象的集合。

同一個類的所有實例都有相同屬性,但屬性取值不一事實上相同,但是它們的狀態不一定相同。例如小張和小王都屬于學生類,都有姓名、性別、年齡、身高和體重這些屬性,但是他們的屬性取值不同。

同一個類的所有實例都有相同行為,意味著它們具有一些相同的功能。

類是一組具有相同屬性和行為對象的模板。面向對象編程的主要任務就是定義對象模型中的各個類。

類是一種類型:是引用類型;類是元數據: 描述數據的數據,因為數據在面向對象領域里以對象的形式存在,所以類是對象共有屬性和方法的抽象描述。

Java程序是各種對象相互交互作用、而不是類。舉例:

早上到公司上班,在電梯中碰到總經理我們會說,張總早或王總早,會不會說人早呀!

我們要看電視,是買臺電視機,而不是買制作電視機的模具;

在java中,類的申明和實現在同一時間,而且必須在一起,前面我們已經做過很多的例子。

在C++中,類的申明和實現可以被分開,(C++內有partical關鍵字)。不知道也沒有關系,這只是讓我們了解下兩者的區別。

4. 類中方法的定義

接下來我們來看一下類中定義的方法的格式。具體格式如下所示:

修飾符 返回類型 方法名(參數列表)異常拋出類型{...}

必須有返回值,如果方法沒有返回值,必須用void申明返回類型。構造器沒有返回類型,構造器加上了返回類型就變成了一個普通方法的聲明了。方法的修飾符可以同時有多個(static final public 等)

注意: return_type:如果方法定義了返回類型,那么在方法體里面就必須出現return語句,而且返回的數據類型要和聲明一致,如果沒有返回類型的話(void),那么方法體里面可以寫return,也可以不寫return。當代碼執行了return語句,那么代碼就不往下執行了,直接退出這個方法并返回。

方法中定義的參數我們通常叫做形參,調用有參數的方法時,我們通常會傳遞一些實參給方法,那么在java中方法的參數是如何的傳遞呢? (先思考形參和實參的區別,詳情見5.參數傳遞)

Class Test{ //temp是形參 public static void add(int temp){ ..... }}public Class TestClass{ public static void main(String []args){ //1是實參 Test.add(1); // temp = 1; int a = 10; //a是實參 Test.add(a); // temp = a; }}

5. 參數傳遞

參數傳遞主要分為2種:

值傳遞:對于基本數據類型,參數通過值傳遞。(把實參的值復制一份再傳給形參)引用傳遞:對于引用類型,參數通過引用(對象的引用)傳遞。(把實參引用中地址值復制一份再傳給形參)。注意: 在函數內操作引用傳遞的數據,會導致原來的數據的值也會改變,二值傳遞不會這樣。

6. this關鍵字

在方法調用、參數傳遞過程中,極有可能出現參數名稱與實例變量名同時的情況。在一個方法內,可以定義和成員變量同名的局部變量或參數,此時成員變量被屏蔽。

實例1:區分成員變量和局部變量

作用1:區別成員變量和局部變量public class Student{ private String name; public void setName(String name){ this.name = name; System.out.print(name); String name; name = "tom"; }}

實例2:調用當前對象的參數

public class Student{ private String name; public void setName(String name){ this.name = name; } public void print(){ //表示調用當前類中的setName方法 this.setName("tom"); //setName("tom"); //在類中可以表示當前類的對象 System.out.println("this:"+this); } public static void main(String[] args){ Student s = new Student(); s.setName("tom"); System.out.println("s:"+s); }}

實例3:

在類的構造器中用this關鍵字可以調用類的其他的構造器this只能出現在構造函數代碼塊中的第一句(前提是this這個時候代表的是調用其他構造器)由this調用的構造器不會再創建新的對象。(而僅僅是調用其中的方法而已。)例如:public class Car{ private String name; private double price; public Car(){ //無參構造器中調用了一個參數的構造器 this("tom"); } public Car(String name){ //一個參數的構造器中調用了倆個參數的構造器 this(name,100000); } public Car(String name,double price){ this.name = name; this.price = price; }}

7. 數據隱藏

這里說說的數據主要指的是類中的屬性

如何對屬性進行隱藏呢?

在前面封裝的屬性前面用private修飾,表示該屬性不能被其它類訪問和修改,它只能被本類訪問和修改,范圍限制在本類內。

java中封裝有兩個方面:

屬性的封裝方法的封裝public class Human{ private String name; public String getName(){return name;} public void setName(String name){this.name=name;}}

8. 封裝

對屬性的封裝 首先屬性可以被一下修飾符修飾: public/protected/default/private(這四種修飾符可以修飾成員變量,也可以修飾方法)

“` public String name; protected String name; private String name; //這樣就是default String name;

//這樣寫是錯的 default String name;

注: 四種修飾符的作用之后會討論 對屬性的封裝:在屬性(實例變量)前加private, 然后通過統一的方法訪問以及修改這些屬性值;使用get/set方法來訪問類中被private修飾的屬性。 目的:這樣做的目的就是隱藏數據信息,保證數據的安全.2. 方法的封裝:(指的是用方法來封裝代碼) * 站在使用的者的角度去考慮,用戶只關心方法的使用,不管里面到底怎么實現的細節. * 從編程的角度去看的話:為了代碼的重用.

public class Test{ private boolean decide1(){} private boolean decide2(){} // 用戶只需了解有decide()方法 具體實現沒用必要 public boolean decide(){return decide1()&&decide2();} }

#9. 方法重載(overload) 有時侯,類的同一種功能有多種實現方式,換句話說,有很多相同名稱的方法,參數不同。這給用戶對這種功能的調用使用提供了很大的靈活性。

例如:Test類中要求有倆個方法: public void print(int i){ System.out.println(“i = “+i); }

public void print(String s){ System.out.println(“s = “+s); }

對于類的方法(包括從父類中繼承的方法), 如果有兩個方法的方法名相同,但參數不一致,那么可以說,一個方法是另一個方法的重載方法。這種現象叫重載。 重載必須滿足以下條件: 1) 方法名稱相同。 2) 參數列表不同(參數類型、個數和順序)。 注意: 返回類型可以不相同。 在一個類中不允許定義兩個方法名相同,并且參數簽名也完全相同的方法。因為假如存在這樣的兩個方法,Java虛擬機在運行時就無法決定到底執行哪個方法。參數簽名是指參數的類型、個數和順序。返回值不相同不會導致方法重載。#10. 創建和初始化對象 按照前面講述的定義類的形式、定義方法的形式,構建好類了之后,程序要真實的運行,還是得通過對象的交互來完成。創建好了類,只是創建了構建對象的模板。接下來,我們可以通過new操作符,快速地構建出對象。使用new有以下作用有以下幾步:1. 為對象分配內存空間,將對象的實例變量自動初始化默認值;2. 如實例變量顯示初始化,將初始化值賦給實例變量(把默認值覆蓋掉);3. 調用構造方法;4. 返回對象的地址值;5. (注意:之后我們會把這個步驟再細分)#11. 構造方法也叫(構造器/構造函數/構造方法)1. 定義: * 構造方法的名字和類的名字相同; * 沒有返回類型,有返回類型的構造器就變成了普通方法。2. 調用時刻: 在創建對象的時候調用; 注意:是先創建對象,然后初始化對象中的屬性值,最后在調用構造器。3. 作用: 可以讓我們在創建對象的時候做一些對象中數據的初始化工作.(因為在new的后面就是寫的構造器) new Student(); new Student("tom",age);4. 構造方法的調用: 構造方法只能通過以下方式被調用: * 當前類的其他構造方法通過this語句調用它; * 當前類的子類的構造方法通過super語句調用它; * 在程序中通過new語句調用它;#12. 構造方法重載當通過new語句創建一個對象時,在不同的條件下,對象可能會有不同的初始化行為。例如:對于公司新來的一個雇員,在一開始的時侯,有可能他的姓名和年齡是未知的,也有可能僅僅他的姓名是已知的,也有可能姓名和年齡都是已知的。如果姓名是未知的,就暫且把姓名設為“無名氏”,如果年齡是未知的,就暫且把年齡設為-1. 可通過重載構造方法來表達對象的多種初始化行為。在一個類的多個構造方法中,可能會出現一些重復操作。為了 提高代碼的可重用性,Java語言允許在一個構造方法中,用this語句來調用另一個構造方法。使用this語句來調用其他構造方法時,必須遵守以下語法規則:1. 假如在一個構造方法中使用了this語句,那么它必須作為構造方法的第一條要執行的語句(不考慮注釋語句)。

public Employee() { String name=”無名氏”; this(name); //編譯錯誤,this語句必須作為第一條語句 } public Employee(String name) { String name=name; }

2. 只能在一個構造方法中用this語句來調用類的其他構造方法,而不能在實例方法中用this語句來調用類的其他構造方法;3. 只能用this語句來調用其他構造方法,而不能通過方法名來直接調用構造方法。

public Employee() { Employee(name); //編譯錯誤,要使用this關鍵字來調用 String name=”無名氏”; } public Employee(String name) { String name=name; } “`


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久精品国产v日韩v亚洲| 日本一区二区不卡| 亚洲小视频在线| 欧美亚洲视频一区二区| 欧美性生活大片免费观看网址| 91精品久久久久久久久久久久久久| 国产精品99久久久久久白浆小说| 在线观看国产精品日韩av| 日韩亚洲欧美中文在线| 日韩成人av在线播放| 日韩电视剧免费观看网站| 国产精品美女久久久久久免费| 国产精品激情av电影在线观看| 成人在线精品视频| 欧美精品久久一区二区| 亚洲成人精品视频在线观看| www.xxxx精品| 亚洲精品福利资源站| 不卡av电影院| 日韩精品视频在线播放| 爽爽爽爽爽爽爽成人免费观看| 亚洲视频在线观看视频| 欧美贵妇videos办公室| 中文在线不卡视频| 欧美大片在线影院| 亚洲国产精品国自产拍av秋霞| 久久人人爽亚洲精品天堂| 欧美亚洲国产日韩2020| 久久久久久香蕉网| 亚洲第一福利在线观看| 久久久97精品| 国产大片精品免费永久看nba| 日韩成人av网址| 欧美日韩国产丝袜另类| 久久久久一本一区二区青青蜜月| 国产精品一区电影| 精品香蕉在线观看视频一| 91久久久久久久久久久| 国产成人精品久久二区二区| 国产精品亚洲一区二区三区| 91精品国产777在线观看| 欧美精品久久久久久久久| 91免费国产网站| 国模私拍一区二区三区| 热99久久精品| 国产精品wwww| 国产一区二区三区在线免费观看| 欧美性xxxxhd| 亚洲第一av在线| 91精品视频大全| 亚洲第一精品夜夜躁人人爽| 日本久久久久久| 中文字幕日韩精品在线观看| 精品一区二区三区三区| 亚洲精品美女在线| 精品久久久在线观看| 欧美日韩一区二区三区在线免费观看| 伊是香蕉大人久久| 日韩黄色在线免费观看| 欧美电影免费观看网站| 亚洲视频自拍偷拍| 亚洲深夜福利网站| 亚洲男人天堂2019| 欧美性视频在线| 欧美激情视频在线免费观看 欧美视频免费一| 日韩精品视频在线观看网址| 中文字幕欧美日韩va免费视频| 黄色成人在线免费| 久久久久久久97| 中文字幕成人精品久久不卡| 国产91精品在线播放| 欧美劲爆第一页| 欧美性猛xxx| 国产精品久久久久久久久久久新郎| 这里精品视频免费| 91影视免费在线观看| 日韩免费av片在线观看| 久久艹在线视频| 国产在线拍揄自揄视频不卡99| 一本一道久久a久久精品逆3p| 国产美女久久精品香蕉69| 国产精品高潮呻吟视频| 亚洲国产91精品在线观看| 精品久久中文字幕| 97色伦亚洲国产| 国产成人精品优优av| 91高清免费在线观看| 日韩av在线影院| 久久精品国产91精品亚洲| 久久天天躁夜夜躁狠狠躁2022| 日韩欧美成人免费视频| 色一情一乱一区二区| 久久99视频精品| 国产成人精品av在线| 国产亚洲欧美一区| 亚洲女人被黑人巨大进入al| 欧美在线视频观看| 日韩精品免费一线在线观看| 亚洲视频免费一区| 亚洲精品免费一区二区三区| 亚洲国产精品视频在线观看| 在线视频精品一| 国产精品久久久久久久久免费看| 秋霞av国产精品一区| 国产亚洲一区二区在线| 久久综合伊人77777蜜臀| 国产成人一区二区三区| 欧美日韩成人在线播放| 欧美精品videosex性欧美| 日韩中文字幕亚洲| 成人精品在线视频| 亚洲第一福利视频| 欧美在线影院在线视频| 日韩国产在线播放| 亚洲第一av在线| 日韩视频在线一区| 日韩欧美在线播放| 欧美日韩成人免费| 亚洲资源在线看| 97香蕉久久超级碰碰高清版| 成人av色在线观看| 国内精品模特av私拍在线观看| 国产噜噜噜噜久久久久久久久| 亚洲精品欧美日韩专区| 最近的2019中文字幕免费一页| 欧美性受xxx| 亚洲精品www久久久久久广东| 亚洲欧美在线一区二区| 欧美日韩激情视频8区| 国产成人精品免高潮在线观看| 欧美www视频在线观看| 久久久久久久电影一区| 欧美精品在线观看| 国产精品视频在线观看| 国产精品电影在线观看| 国模视频一区二区| 亚洲美女在线观看| 久久久久久九九九| 日韩精品视频中文在线观看| 久久久久国产精品一区| 裸体女人亚洲精品一区| 久久久www成人免费精品张筱雨| 久久精品99久久久久久久久| 在线激情影院一区| 97在线视频免费观看| 精品亚洲夜色av98在线观看| 欧美国产日韩中文字幕在线| 亚洲精品v天堂中文字幕| 中文字幕自拍vr一区二区三区| 欧美日韩免费在线| 国产精品久久在线观看| 91久久精品国产91久久| 成人精品福利视频| 精品久久久久久中文字幕大豆网| 岛国av在线不卡| 日韩av电影手机在线| 精品偷拍各种wc美女嘘嘘| 亚洲风情亚aⅴ在线发布| 日韩av大片在线| 久久免费视频这里只有精品| 欧美色欧美亚洲高清在线视频| 日韩精品视频在线观看免费| 亚洲欧洲黄色网| 国产欧美日韩精品丝袜高跟鞋|