精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

談談我對面向對象以及類與對象的理解

開發 開發工具
對于剛接觸JAVA或者其他面向對象編程語言的朋友們來說,可能一開始都很難理解面向對象的概念以及類和對象的關系。筆者曾經帶過一個短期培訓班教授java入門基礎,在最后結束課程的時候,還有很多同學不太理解面向對象的思維以及類與對象的意義。

[[173166]]

文章最初發表于我的個人博客非典型性程序猿

對于剛接觸JAVA或者其他面向對象編程語言的朋友們來說,可能一開始都很難理解面向對象的概念以及類和對象的關系。筆者曾經帶過一個短期培訓班教授java入門基礎,在最后結束課程的時候,還有很多同學不太理解面向對象的思維以及類與對象的意義。這幾天有空,就想著整理整理自己的思路,談談自己對面向對象以及類與對象的理解。

面向對象

首先,一言不和先百度,得到如下定義:

一切事物皆對象,通過面向對象的方式,將現實世界的事物抽象成對象,現實世界中的關系抽象成類、繼承,幫助人們實現對現實世界的抽象與數字建模。

我們知道,編寫程序的目的是為了解決現實生活中的問題,編程的思維方式也應該貼近現實生活的思維方式。面向對象的編程方式就是為了實現上述目的二出現的。它使得編程工作更直觀,更易理解。需要注意的是這里說的編程不光是coding還包括了設計的過程也是面向對象的

為什么說面向對象更貼近實際生活

想象一下,當我們向別人描述一樣事物時,我們都是怎么說的?"它有像鴨子一樣的嘴巴","它有4條退","爪子里還有蹼","它是哺乳動物但卻是卵生"。

這種HAS A 和 IS A的表達方式往往可以簡單而高效的描述一樣事物。HAS A描述事物的屬性或行為,IS A 則說明了事物的類屬。

當我們把這一系列的屬性組合起來便得到的鴨嘴獸這一類,同時哺乳動物一詞簡單精煉的表面了所有哺乳動物的特性而不用一一列出,這是繼承特性的體現,同時卵生又是多態的體現。

這就是面向對象的思維特點,抽取(抽象)有用的屬性和行為(拋棄哪些無需關系的)組織(封裝)成一個類。這個過程中你也許會發現很多屬性或方法是和另一個類相同的,那么你就可以采用繼承的方式避免重復(當然這個過程也有可能是,當你設計完一個個類后,才發現他們有共同點,然后再抽取出基類)。更重要的是,繼承是可以不原樣照搬的,我們可以通過重載實現相同行為或屬性的特有實現方式,這種特點稱之為多態,例如同樣的生產行為,實現方式由胎生變為卵生。請大聲念出,并牢牢記住面向對象的四個特征:

  • 抽象
  • 封裝
  • 繼承
  • 多態

與早期結構化編程相比

早期結構化編程是面向過程的(功能),換句話說程序是由功能的集合組成,而調用者是作為功能的參數傳入的。而在面向對象的程序中,對象是主體,程序是由對象的集合組成。一個對象中包含一系列符合設計的功能供其他對象調用。這么說可能還是比較抽象,

例如當我們設計一個五子棋游戲時,面向過程的設計思路就是首先分析問題的步驟: 

1、開始游戲,2、黑子先走,3、繪制畫面,4、判斷輸贏,5、輪到白子,6、繪制畫面,7、判斷輸贏,8、返回步驟2,9、輸出最后結果。

把上面每個步驟用分別的函數來實現,問題就解決了。

而面向對象的設計則是從另外的思路來解決問題。整個五子棋可以分為:

1、黑白雙方,這兩方的行為是一模一樣的,2、棋盤系統,負責繪制畫面,3、規則系統,負責判定諸如犯規、輸贏等。

第一類對象(玩家對象)負責接受用戶輸入,并告知第二類對象(棋盤對象)棋子布局的變化,棋盤對象接收到了棋子的變化就要負責在屏幕上面顯示出這種變化,同時利用第三類對象(規則系統)來對棋局進行判定。

(以上例子來自國內著名問答社區)

隨便寫點代碼,大家看看就好,不要太認真....

  1. /** 
  2. 玩家類 
  3. **/ 
  4. public class Player { 
  5.     String name;       //棋手名稱 
  6.     boolean isFirst;  //是否先手 
  7.     int color_flag;  //代表顏色  0-白 1-黑 
  8.     Table table;//棋盤對象 
  9.      
  10.     public Player(String name,boolean isFirst;int color_flag){ 
  11.              this.name=name
  12.              this.isFirst=isFirst; 
  13.              this.color_flag=color_flag; 
  14.       } 
  15.     
  16.     /** 
  17.     下棋,x,y為落子坐標 
  18.     **/ 
  19.     public void play(int x,int y) throws Exception{ 
  20.       if(this.table==null){ 
  21.          throw new IllegalArgumentException("玩家還未注冊到棋盤!"); 
  22.       } 
  23.       table.setNewPieces(x,y); 
  24.     } 
  25.      
  26.     public void setTable(Table table){ 
  27.        this.table=table
  28.     }  
  29. /** 
  30. 棋盤類 
  31. **/ 
  32. public class Table
  33.   List<Player> playerList=new ArrayList<Player>(); 
  34.   Referee referee ; 
  35.   public Table(){ 
  36.    referee =new Referee(this); 
  37.   } 
  38.   /** 
  39.     注冊玩家 
  40.   **/ 
  41.   public void registPlayer(Player player) throws Exception { 
  42.       //檢測棋盤中的玩家是否已滿,先手玩家和玩家選色是否沖突。 
  43.       ....... 
  44.      playerList.add(player); 
  45.      player.setTable(this); 
  46.   } 
  47.  
  48.    /** 
  49.     落子 
  50.    **/ 
  51.  
  52.    public void setNewPieces(int x , int y){ 
  53.           //重新繪制棋盤 
  54.           ...... 
  55.          //調用裁判對象,判斷結果 
  56.       if(referee.isEnd){ 
  57.           End(); 
  58.         } 
  59.    } 
  60.  
  61.    public void End(){ 
  62.       ....... 
  63.   } 
  64. /** 
  65. 裁判類 
  66. **/ 
  67. public class Referee(){ 
  68.   Table table; 
  69.   public Referee(Table table){ 
  70.     this.table=table
  71.  } 
  72.  
  73.    public boolen isEnd(){ 
  74.       //判斷輸贏 
  75.       .... 
  76.     return false;  
  77.    } 
  78.  

然而事實上,通過上述示例代碼,我們不難發現,即使我們使用面向對象的方式,上面例子里面向過程中提到的幾個下棋過程我們還是都實現了的,只不過程被封裝到了類的方法中。所以說其實面向對象和面向過程并不是編程的區別(需要實現的業務邏輯的量不會產生變化),而是設計的區別!

類與對象

類是抽象的,而對象是具體的

如何理解上面的話呢? 例如鴨嘴獸是類型,具體的鴨嘴獸A、鴨嘴獸B就是對象了。在JAVA中對象是通過new關鍵字聲明的。 再例如,《紅色警戒》中美國大兵是一類兵種,點擊制造后從兵營里出來的那個會開槍的家伙就是對象了:

類的定義就是一個模板,它描述的一類對象的屬性與行為。類往往是抽象的、沒有實體的。哺乳動物是類的概念,是抽象的,現實中沒有哺乳動物這一實體,只有具體的如老虎,獅子等。編程工作中套用這一思維模式,我們將程序中的實例抽象為類,例如一個系統中的用戶有張三、李四我們會把他們抽象為Person類,或者稱之為一個名為Person的數據類型。

對象則是根據所屬類模板創造出來的實實在在的事物。在程序中我將這個實實在在的事物稱之為實例,我們為它的屬性賦上特定的值,讓它成為張三或者李四。在內存里來說,對象是表示的就是具體數據。

前面說的都是概念性的東西,下面我們說說實際的運用過程中的理解。

從數據類型來說

以java為例,數據類型分為基本數據類型和引用數據類型。

基本數據類型就是byte,short,int,long,double,char,boolean;其它的,需要用到new關鍵字來賦值的都是引用數據類型。 類與對象指的便是引用數據的類型與其值(這里指的類不光是class,還包括接口、數組、枚舉、注解)。 而引用指的是內存地址的引用,關于這點在后面說的內存時會細說。

看下面的代碼:

  1. int a =1; 
  2.  
  3. Person b=new Person();  

a 和 b 都是本身無意義的變量名。需要關注的是:a的類型是基本數據類型int值為1,而b的類型是Person屬于引用類型,其引用的是new Person()這個對象。我們往往會說對象xx,比如這里的對象b。但實際上b只是對象的引用,真正的對象是后面的new Person()!

需要注意的是String也是引用數據類型,只不過因為使用率非常高,所以對于String,jvm支持其可 以像基本數據類型一樣使用:String a = "abc"; 同等于 String a = new String("abc");

總之呢,簡單來說類指的的引用數據的類型,對象是具體賦的值。為了更深入理解,我們下面需要解釋下這個引用是如何體現的。

什么是引用(從內存來說)

要深入理解什么是類,什么是對象,什么又是引用,就離不開說說java的內存使用方式。

在java中內存被大致劃分為棧(stack)與堆(heap) (之所以是大致,是因為還包括其它幾部分就不在這細說)。

關于什么是棧與堆在這就不細說,有空我再整理一篇文章詳細說明。

在這里我們只說一點:java中,基本數據類型以及對象的引用都保存在棧(stack),而對象則保存在堆(heap)中,例如當如下代碼:

  1. int a=1; 
  2.  
  3. Person p;  

內存中的狀態大致如下:

int a = 1 是直接在棧中開辟空間,而對于未進行實例化的Person p因為沒有有效的內存地址引用它的值是null。而當代碼進行如下修改時:

  1. int a =1 ; 
  2.  
  3. Person p = new Person();  

內存中的狀態大致如下:

 

 


Person p=new Person();使得p的值=0x8da23也就是對象new Person();在堆中的地址。所以,到這里后就不難理解之前說的對象的引用了,所謂引用其實就是堆內存地址的引用。 

總結

隨著計算機技術的不斷提高,現在計算機不單單是用來解決運算問題,而是被用于解決越來越貼近現實生活的復雜問題。面向對象就是這一發展進程的產物,它使得編程工作更貼近人的思維方式,從而大大提升編程效率。我們必須明白的是面向對象并不是一種編程方式,而是一種編程思維方式,這種思維方式涵蓋了分析,設計,編碼等。在面向對象編程中,程序的基本單元是對象,數據封裝在對象中。類是對象模板,是預定義好的結構,所謂的實例化一個類,所指的就是將數據填入模板。

最后,本人文筆不是很好,有待提高。寫文章和博客的最大目的是梳理自己的思路,其二是分享自己的想法,望大家多多吐槽,愿共同提高。

責任編輯:龐桂玉 來源: segmentfault
相關推薦

2012-06-07 10:11:01

面向對象設計原則Java

2024-01-03 13:38:00

C++面向對象編程OOP

2009-01-04 09:08:30

面向對象繼承接口

2012-12-18 09:24:47

2023-10-25 13:42:19

Java面向對象

2013-06-07 10:55:10

2023-11-30 08:00:54

面向對象面向切面

2023-01-10 09:38:09

面向對象系統

2010-02-02 13:15:26

Python類

2023-09-27 23:28:28

Python編程

2023-11-02 07:55:31

Python對象編程

2022-02-21 07:45:29

面向對象代碼依賴倒置

2010-06-13 10:01:48

面向對象技術與UML

2012-06-12 14:23:02

面向對象編程開發

2013-01-10 10:05:29

編程面向對象編程

2021-07-02 14:14:14

Python對象設計

2021-07-16 10:23:47

Python設計對象

2010-07-08 10:47:42

UML面向對象

2013-03-11 09:23:22

Go語言面向對象

2009-01-16 08:52:26

面向對象OOP編程
點贊
收藏

51CTO技術棧公眾號

麻豆成人在线视频| 国产激情在线观看视频| 精品国产999久久久免费| 亚洲欧美伊人| 亚洲国产精品免费| 2022亚洲天堂| 快射视频在线观看| 国产91在线观看| 欧洲成人免费aa| 免费精品在线视频| 国产一级成人av| 91福利视频在线| 在线观看18视频网站| 天天操天天干天天插| 久久夜色精品| 日韩在线小视频| 亚洲香蕉中文网| 精品自拍视频| 亚洲不卡av一区二区三区| 亚洲高清精品中出| 欧美熟妇另类久久久久久不卡| 久久久久国产一区二区| 九九热在线精品视频| 自拍偷拍中文字幕| 亚洲3区在线| 在线视频欧美精品| 免费超爽大片黄| 97最新国自产拍视频在线完整在线看| 成人av免费网站| 国产免费一区二区三区在线能观看| 国产一级一片免费播放放a| 日韩一区二区中文| 亚洲精品一区中文| 国产乱国产乱老熟300部视频| 日韩免费小视频| 午夜国产精品影院在线观看| 艳母动漫在线观看| 国产youjizz在线| av中文字幕一区| 亚洲一区二区三区视频播放| 综合网在线观看| 亚洲激情偷拍| 久久影视电视剧免费网站| 在线视频第一页| 青青草久久爱| 精品999在线播放| 久久久精品视频国产| 成人全视频在线观看在线播放高清| 精品久久久久久久久久国产| 欧美一区二区视频在线播放| 高潮毛片在线观看| 中文字幕视频一区二区三区久| 欧美极品一区二区| 三级国产在线观看| 91丝袜美腿高跟国产极品老师 | 制服丝袜激情欧洲亚洲| 国产精彩免费视频| 成人黄色免费短视频| 欧美丝袜美女中出在线| 欧美乱大交xxxxx潮喷l头像| 天堂va在线| 亚洲综合图片区| 欧美日韩午夜爽爽| 中文字幕伦理免费在线视频| 亚洲色图19p| 玖玖精品在线视频| 在线看女人毛片| 曰韩精品一区二区| 欧美狂野激情性xxxx在线观| 国产蜜臀在线| 精品久久久久久| 超碰97人人射妻| 日韩成人亚洲| 在线观看精品一区| 美女在线视频一区二区| 在线欧美激情| 日韩精品一区二区三区老鸭窝 | 成人在线视频国产| 91精品国产aⅴ一区二区| 亚洲国产日韩在线一区| aiai久久| 亚洲男人的天堂在线| 日韩毛片无码永久免费看| 欧美电影免费播放| 久久99精品视频一区97| 国产一级大片在线观看| 国产精品主播| 国产精品欧美亚洲777777| 一区二区三区日| 国产成人精品影院| 久久99精品久久久久久水蜜桃| 奇米影视888狠狠狠777不卡| 中文字幕成人网| 91亚洲精品国产| 在线看片国产福利你懂的| 欧美婷婷六月丁香综合色| 香蕉视频xxxx| 欧美久久香蕉| 日韩视频永久免费观看| 亚洲精品午夜久久久久久久| 老司机午夜免费精品视频| 国产成人精品在线视频| 国产精品探花视频| 99精品视频在线观看| 亚州欧美一区三区三区在线| 婷婷色在线资源| 在线一区二区三区四区五区| 一本之道在线视频| 蜜臀av免费一区二区三区| 美女av一区二区| 精品人妻无码一区二区性色| 国产一区二区在线观看免费| 久久精品日产第一区二区三区精品版 | 亚洲人成免费| 国产日产久久高清欧美一区| 欧美视频一二区| 亚洲欧美一区二区视频| 日日橹狠狠爱欧美超碰| 成人在线啊v| 国产一区二区三区在线| 国产污片在线观看| 久久成人久久爱| 欧美精品一区二区三区在线四季| 最爽无遮挡行房视频在线| 色哟哟一区二区三区| 欧美丰满熟妇bbb久久久| 日韩欧美国产精品综合嫩v| 97久久伊人激情网| 国产高潮在线观看| 亚洲欧洲精品成人久久奇米网| 国产在线青青草| 成人av激情人伦小说| 中文字幕一精品亚洲无线一区 | 91亚洲国产成人精品性色| 黄网在线免费| 欧美日韩免费看| 韩国三级在线看| 9999国产精品| 国产精品视频导航| 国产女人在线观看| 日韩欧美在线国产| 一级国产黄色片| 亚洲视频综合| www.一区二区三区| 91极品在线| 91精品国产高清一区二区三区蜜臀| 女人十八毛片嫩草av| 丝袜美腿成人在线| 欧美日韩精品免费看| 日本不卡网站| 精品视频中文字幕| 欧美一二三区视频| 91尤物视频在线观看| 六月婷婷在线视频| 红杏成人性视频免费看| 午夜精品在线视频| 少妇一区二区三区四区| 精品国产999| 91精品国产自产| 国产精品久久久久久模特| 鲁丝片一区二区三区| 忘忧草在线日韩www影院| 日韩激情视频在线播放| 国产一级理论片| 成人app下载| 国产男女无遮挡| 国产伦一区二区三区| 国产精品jizz在线观看麻豆| 精品电影在线| 欧美视频在线一区二区三区| 国产又黄又粗又猛又爽的| 久久99精品网久久| 国产女主播av| 女人抽搐喷水高潮国产精品| 欧美在线欧美在线| 国产黄色在线| 欧美精品v日韩精品v韩国精品v| 亚洲不卡在线播放| 高清久久久久久| 欧美 日韩精品| 青草国产精品| 99久久自偷自偷国产精品不卡| 午夜dj在线观看高清视频完整版 | 蜜桃免费在线| 欧美日韩一区视频| 精品97人妻无码中文永久在线| 成人爽a毛片一区二区免费| 国产超级av在线| 日韩av久操| 99久久99久久| 波多野结衣久久精品| 久久精品久久久久久| 国产综合在线播放| 欧美在线观看视频一区二区三区| 99久久婷婷国产综合| 99热精品一区二区| 亚洲天堂国产视频| 99国产精品视频免费观看一公开 | 男人操女人下面视频| 一本色道精品久久一区二区三区 | 精品久久久久久电影| 特级西西人体高清大胆| 国产99一区视频免费| 欧美一级片中文字幕| 伊人青青综合网| 欧美视频观看一区| 日本亚州欧洲精品不卡| 日韩av黄色在线观看| 午夜伦理在线视频| 这里只有精品丝袜| 天天干天天插天天操| 欧美美女一区二区| 一级成人黄色片| 亚洲精品视频在线观看免费| 西西444www无码大胆| 国产成人一区在线| 亚洲xxx在线观看| 亚洲欧美日本日韩| 日本黄网站色大片免费观看| 久久99免费视频| 国产精品久久7| 91精品一久久香蕉国产线看观看| 热99在线视频| heyzo在线播放| yellow中文字幕久久| 欧美日韩在线精品一区二区三区激情综| 91精品国产色综合久久ai换脸| 免费看污视频的网站| 亚洲大片精品永久免费| 久久人妻无码aⅴ毛片a片app| 久久久美女毛片| www.88av| 成人午夜精品一区二区三区| 自拍一级黄色片| 毛片av中文字幕一区二区| 中文字幕乱码人妻综合二区三区 | 国产女主播一区| 中文在线一区二区三区| 成人免费高清在线| 日本少妇xxx| 国产一区二区精品久久| www.se五月| 日本成人中文字幕在线视频| 97xxxxx| 国产精品美女久久久浪潮软件| www插插插无码免费视频网站| 中文字幕一区二区三区久久网站| 亚洲伊人婷婷| 日韩午夜电影网| 亚洲日本欧美在线| 日韩精品欧美激情一区二区| 日韩精彩视频| 成人a'v在线播放| 色播亚洲婷婷| 欧美色婷婷久久99精品红桃| 色综合久久久久久久久五月| 国产尤物久久久| 日本视频一区二区在线观看| 免费成人结看片| 免费看国产精品一二区视频| 免费成人网www| 五月婷婷一区| 99免费精品| 国产女人18毛片| 激情久久综合| 精品这里只有精品| 久久高清国产| 一级在线免费视频| 精品系列免费在线观看| 中文字幕在线视频一区二区| 国产精品亚洲综合一区在线观看| 好吊操视频这里只有精品| 成人av网站免费观看| 丝袜美腿中文字幕| 欧美高清在线精品一区| 神马久久精品综合| 亚洲高清一区二区三区| 亚洲久久在线观看| 欧美三日本三级三级在线播放| 亚洲熟妇av乱码在线观看| 欧美美女一区二区在线观看| 亚洲成人中文字幕在线| 日韩精品高清视频| 在线观看黄色av| 久久91精品国产91久久跳| 国产高清自产拍av在线| 国产精品99久久久久久人 | 国产在线视频欧美一区二区三区| 欧美重口另类| 杨幂一区欧美专区| 欧美精品一卡| 久久综合久久色| 国产精品一区二区三区乱码| 国产激情视频网站| 国产精品嫩草99a| 久久精品国产亚洲av麻豆色欲| 狠狠躁夜夜躁久久躁别揉| 一级特黄aa大片| 亚洲第一男人天堂| 91caoporn在线| 欧美国产日韩视频| 激情开心成人网| 999热视频| 欧美一区二区三区激情视频| 波多野结衣与黑人| 日本大胆欧美人术艺术动态| 韩国黄色一级片| 亚洲国产精品ⅴa在线观看| 久久久精品99| 欧美日韩在线电影| 色欲av永久无码精品无码蜜桃| 色伦专区97中文字幕| 麻豆视频在线看| 亚洲自拍高清视频网站| 精品影片在线观看的网站| 伊人再见免费在线观看高清版| 久久天天综合| 亚洲一级Av无码毛片久久精品| 国产精品毛片久久久久久| 国产成人精品a视频一区| 欧美一区二区在线不卡| 国产鲁鲁视频在线观看免费| 久久久免费在线观看| 国产电影一区| 亚洲精品tv久久久久久久久| 香蕉久久夜色精品| 挪威xxxx性hd极品| 亚洲精品一卡二卡| 亚洲视频久久久| 伊人伊人伊人久久| 中文在线最新版地址| 国产精品久久久久久久久久直播| 7777久久香蕉成人影院| 手机视频在线观看| 久久久精品2019中文字幕之3| 国产精品第72页| 精品日韩99亚洲| av免费网站在线| 成人在线小视频| 久久激情电影| 日本xxxx黄色| 国产精品免费网站在线观看| 欧美特级黄色片| 亚洲女人天堂网| av日韩亚洲| 日本高清不卡三区| 日韩中文欧美在线| 少妇无套高潮一二三区| 91黄色免费网站| 大片免费播放在线视频| 国产精品国产亚洲伊人久久 | 国产黄人亚洲片| 国产盗摄x88av| 日韩欧美美女一区二区三区| 欧美日韩经典丝袜| 国产精品v欧美精品∨日韩| 一区二区视频欧美| 国产xxxxxxxxx| 色哟哟一区二区| av电影在线观看一区二区三区| 国产精品久久久久久久久久久久| 成人激情诱惑| 欧美一级小视频| 亚洲精品免费在线播放| 亚洲精品无码专区| 7m精品福利视频导航| 亚洲精品无吗| 亚洲国产成人va在线观看麻豆| 自拍偷拍欧美精品| 高清毛片aaaaaaaaa片| 欧美性受xxxx黑人猛交| 黑丝美女一区二区| 亚洲免费在线播放视频| 亚洲国产美女搞黄色| 伦理片一区二区三区| 国产欧美精品久久久| 久久久9色精品国产一区二区三区| 久久精品国产露脸对白| 夜夜精品视频一区二区 | 亚洲人成在线一二| 在线观看精品| 中文字幕第50页| 国产suv精品一区二区6| 国产婷婷色一区二区在线观看| 亚洲天堂成人在线| 蜜桃在线一区| 精品国产一区三区| 中文字幕乱码日本亚洲一区二区| 中文字幕久久熟女蜜桃| 欧美α欧美αv大片| 黄色漫画在线免费看| 欧美日韩一区二区视频在线| 久久99精品久久久久久| 欧美国产日韩综合| 亚洲欧美综合精品久久成人| 欧美亚洲黄色| 99视频在线免费播放| 国产视频一区在线观看| 精品毛片一区二区三区| 欧美中文在线观看国产|