摘要:二面向對象概述面向過程的設計思想和面向對象的設計思想我要吃魚香肉絲蓋飯面向過程我買菜我洗菜我切菜我放水我點火我做飯我炒菜。。。。
大家好,上次我們講過了樂字節(jié)Java編程之方法、調用、重載、遞歸,接下來我們將會進入到Java封裝的內容。Java編程語言發(fā)展,面向對象和類。
一、編程語言的發(fā)展機器語言——直接由計算機的指令組成,指令、數(shù)據(jù)、地址都以“0”和“1”組成:可以被計算機直接識別并執(zhí)行。
匯編語言——用容易理解和記憶的符號表示指令、數(shù)據(jù)以及寄存器等,抽象層次很低,程序員需要考慮大量的機器細節(jié)。
高級語言——屏蔽了機器細節(jié),提高了語言的抽象層次接近于人的自然語言,60年代出現(xiàn)的結構化編程語言剔除了結構化數(shù)據(jù)和語句,數(shù)據(jù)和過程抽象等概念。
面向對象的語言——與以往的各種語言的根本不同是,它的設計出發(fā)點就是為了更能直接地描述問題域中客觀存在的事物。
語言的發(fā)展是朝著人類更容易理解的方向前進。
OOP(Object Oritented Programming)面向對象編程,屬于編程的一種通用的思想。OOP使我們的開發(fā)變得不再那么復雜,并大大增加了程序的靈活性和擴展性。如果你尚未使用OOP思想來完善你的程序設計,那你真的OUT了。
代碼世界中與現(xiàn)實生活中一樣,社會需要分工,我們不必描述所有一切事物的制作過程,因為有時,我們只想要這個東西,并不關心它的過程。
二、面向對象概述 2.1 面向過程的設計思想和面向對象的設計思想我要吃魚香肉絲蓋飯
面向過程:我買菜、我洗菜、我切菜、我放水、我點火、我做飯、我炒菜。。。。
面向對象:找家飯館,大吼一聲“我要吃魚香肉絲蓋飯”
至于飯怎么來的我不管
所有的細節(jié)信息都封裝在這個飯館類的內部,我不需要關心里面到底有幾道工序
面向過程就是知道一個很NB的人來完成一件事;面向對象就是指導一群人來完成一件很NB的事。
2.2 面向對象的設計思想面向對象的基本思想是,從現(xiàn)實世界中客觀存在的事物出發(fā)來構造軟件系統(tǒng),并在系統(tǒng)的構造中盡可能運用人類的自然思維方式。
面向對象更加強調運用人類中日常的思維邏輯中經常采用的思想方法與原則,如抽象、分離、繼承、聚合、多態(tài)等。
三、對象和類的概念對象用計算機語言對問題域中事物的描述,對象通過“屬性(attribute)”和“方法(method)”。
3.1 類
類是用于描述同一類型的對象的一個抽象的概念,類中定義了這一類對象所具有的靜態(tài)屬性和動態(tài)屬性。
類可以看成一類對象的模板,對象可以看成該類的一個具體實例。
類,說白了就是歸類,就是對同種事物進行抽象,抽出“像”的部分,包含有關事務(對象)動作方式的信息,包括它的名稱、屬性、方法及所在的場景或聯(lián)系。
例子:
根據(jù)客戶的需要,我們來制作一個蛋糕。首先要有一個制作蛋糕的菜譜(類),里面當然要有制作這個蛋糕需要什么原材料(成員屬性),還要告訴我們如何去做(成員方法)。
public class Cake{ public String shape; // 蛋糕的形狀 public int cream; //奶油的量 public int eggs; //雞蛋的量 public int water; //水的量 public int bakeTime; // 烤制時間 public String others; // 其他配料 // 制作 public void makeCake(){ System.out.println(“放入” + cream + “的奶油,加入” + eggs+ “雞蛋…”); } }
由此可見:類就是模板,同時是復雜的數(shù)據(jù)類型
有了上述蛋糕類,還沒有擁有一個實實在在的蛋糕(對象),只有當我們照著菜譜上寫的,把原材料準備齊全,照著一步一步去做,方可得到這個蛋糕(對象的實例化)
現(xiàn)在我們的高級面點師來了,他知道如何去做:只要有菜譜和材料
class Baker{ String name; // 名字 public Cake makeCake(){ Cake cake = new Cake(); cake.shape = “麻將型”; cake.cream = 50; cake.water = 500; cake.eggs = 5; cake.bakeTime = 5; cake.others = “黃油、糖、水果、顏料”; return cake; } }3.3 類(對象)之間的關系
關聯(lián)關系
繼承關系
聚合關系(整體和部分)
實現(xiàn)關系
多態(tài)
對象是Java程序的核心,在Java程序中“萬事萬物皆對象”。
類是用來創(chuàng)建同一類型的“模板”,在一個類中定義了該類對象所具有的成員變量以及方法
JDK提供了很多類供編程人員使用,編程人員也可以定義自己的類。
成員變量=屬性 方法=功能
4.1 Java類的定義//用class關鍵字定義一個類,例如
class Person{
// 成員變量 int id; int age = 20; // 方法定義 int getAge(){return age;} void setAge(int i){age = I;}
}
類的定義主要有兩方面組成——成員變量和方法
聲明成員變量的格式為:
[
例如: int id; private int age = 20;
聲明方法的格式為;
[
[
}
例如:public int getAge(){ return age;}
4.2 成員變量成員變量可以使用Java語言中任何一種數(shù)據(jù)類型(包括基本類型和引用類型)
定義成員變量時可以對其初始化,如果不對其初始化,Java使用默認的值對其初始化。
成員變量的作用范圍為整個類體
4.3 Java面向對象基本概念Java語言中除基本類型之外的變量類型都稱為引用類型
Java中的對象是通過引用對其操作的。
例如:
Dog dog;
dog = new Dog();
如何在內存中區(qū)分類和對象?
類是靜態(tài)的概念,代碼區(qū)
對象是new出來的,位于堆內存,類的每個成員變量在不同的對象中都有不同的值(除了靜態(tài)變量)而方法只有一份,執(zhí)行的時候才占用內存。
4.4 對象的創(chuàng)建和使用必須使用 new 關鍵字創(chuàng)建對象,new做三件事:
①會在堆中為相應類型分配空間
②會調用相應的構造方法來初始化對象
③將在堆中開辟的空間的地址返回回來
使用對象(引用).成員變量來引用對象的成員變量。
使用對象(引用).方法(參數(shù)列表)來調用對象的方法。
同一類的每個對象有不同的成員變量存儲空間。
同一類的每個對象共享該類的方法。
樂字節(jié)原創(chuàng),轉載請注冊出處。
接下來,小樂會繼續(xù)講述Java構造器,引用與內存分析,敬請關注 樂字節(jié)
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://www.ezyhdfw.cn/yun/75437.html
摘要:但是,很遺憾,消費類電子產品并沒有高速的發(fā)展起來,進入蟄伏期的飛速發(fā)展無心插柳柳成蔭年代中末期,有一個改變世界的大事出現(xiàn)了互聯(lián)網的爆發(fā)式增長。 從這篇文章開始,小樂準備寫一整系列的Java學習文章,一步一步帶您進入Java的神奇世界! 這是第一篇:Java語言概述以及Java的發(fā)展前景 1、SUN公司介紹 SUN公司全稱是Stanford University Network. SUN...
摘要:本文承接上一篇樂字節(jié)發(fā)射之二實例化對象接口與父類修飾符和屬性繼續(xù)講述反射之三方法數(shù)組類加載器一方法獲取所有方法包括父類或接口,使用即可。當沒有任何引用指向對象時就會被卸載,結束類的生命周期。 本文承接上一篇:樂字節(jié)Java發(fā)射之二:實例化對象、接口與父類、修飾符和屬性 繼續(xù)講述Java反射之三:方法、數(shù)組、類加載器 一、方法 獲取所有方法(包括父類或接口),使用Method即可。sho...
摘要:保持與和的相似性,以便開發(fā)人員能很快學會。年,網景公司的布蘭登與公司聯(lián)手開發(fā)一個稱為的腳本語言。當時微軟決定進軍瀏覽器,發(fā)布了并搭載了一個的克隆版,叫做。在微軟進入后,有種不同的版本同時存在以及。 一、JavaScript簡介 JavaScript 是一種具有面向對象能力的、解釋型的程序設計語言。更具體一點,它是基于對象和事件驅動并具有相對安全性的客戶端腳本語言。它的主要目的是,驗證發(fā)...
摘要:使用表達式,使得應用變得簡潔而緊湊。很多語言等從設計之初就支持表達式。表達式的參數(shù)與函數(shù)式接口內方法的參數(shù),返回值類型相互對應。更多教程和資料請上騰訊課堂樂字節(jié) showImg(https://segmentfault.com/img/bVbtotg?w=935&h=345); Java8 引入Lambda表達式,允許開發(fā)者將函數(shù)當成參數(shù)傳遞給某個方法,或者把代碼本身當作數(shù)據(jù)進行處理。...
摘要:換句話說,套接字起到通信端點的作用。單個套接字是一個端點,而一對套接字則構成一個雙向通信信道,使非關聯(lián)進程可以在本地或通過網絡進行數(shù)據(jù)交換。 大家好,我是樂字節(jié)小樂,上次給大家講述了Java中的IO流之輸出流|樂字節(jié),本文將會給大家講述網絡編程。 主要內容如下: 網絡 網絡分層 列表項目 IP位置 端口port 網絡編程 showImg(https://segmentfault.c...
閱讀 3136·2021-11-24 11:14
閱讀 3659·2021-11-22 15:22
閱讀 3276·2021-09-27 13:36
閱讀 795·2021-08-31 14:29
閱讀 1384·2019-08-30 15:55
閱讀 1853·2019-08-29 17:29
閱讀 1193·2019-08-29 16:24
閱讀 2528·2019-08-26 13:48