當前位置:首頁 » 編程語言 » java面向對象設計

java面向對象設計

發布時間: 2022-05-28 23:55:34

java,面向對象程序設計

做好了,參考如下
public interface Shape {
public static final double PI = 3.14;
double getGirth();
double getArea();
}

public class Area {
double getShapeGrith(Shape shp) {
return shp.getGirth();
}
double getShapeArea(Shape shp) {
return shp.getArea();
}
}

public class Circle implements Shape {

private double radius;

public Circle(double radius) {
this.radius = radius;
}

@Override
public double getGirth() {
return 2*PI*radius;
}

@Override
public double getArea() {
return PI*radius*radius;
}
}

public class Rectangle implements Shape {

private double width;
private double height;

public Rectangle(double width, double height) {
this.width = width;
this.height = height;
}

@Override
public double getGirth() {
return 2*(width+height);
}

@Override
public double getArea() {
return width*height;
}
}

㈡ java面向對象程序設計有什麼優缺點

、Java語言是簡單的。Java語言的語法與C語言和C++語言很接近,使得大多數程序員很容易學習和使用Java。另一方面,Java丟棄了C++ 中很少使用的、很難理解的、令人迷惑的那些特性,如操作符重載、多繼承、自動的強制類型轉換。特別地,Java語言不使用指針,並提供了自動的廢料收集,使得程序員不必為內存管理而擔憂。
2、Java語言是一個面向對象的。Java語言提供類、介面和繼承等原語,為了簡單起見,只支持類之間的單繼承,但支持介面之間的多繼承,並支持類與介面之間的實現機制(關鍵字為implements)。Java語言全面支持動態綁定,而C++ 語言只對虛函數使用動態綁定。總之,Java語言是一個純的面向對象程序設計語言。
3、Java語言是分布式的。Java語言支持Internet應用的開發,在基本的Java應用編程介面中有一個網路應用編程介面(java.net),它提供了用於網路應用編程的類庫,包括URL、URLConnection、Socket、 ServerSocket等。Java的RMI(遠程方法激活)機制也是開發分布式應用的重要手段。
4、Java語言是健壯的。Java的強類型機制、異常處理、廢料的自動收集等是Java程序健壯性的重要保證。對指針的丟棄是Java的明智選擇。Java的安全檢查機制使得Java更具健壯性。
5、Java語言是安全的。Java通常被用在網路環境中,為此,Java提供了一個安全機制以防惡意代碼的攻擊。除了Java語言具有的許多安全特性以外,Java對通過網路下載的類具有一個安全防範機制(類ClassLoader),如分配不同的名字空間以防替代本地的同名類、位元組代碼檢查,並提供安全管理機制(類SecurityManager)讓Java應用設置安全哨兵。
6、Java語言是體系結構中立的。Java程序(後綴為java的文件)在Java平台上被編譯為體系結構中立的位元組碼格式(後綴為class的文件), 然後可以在實現這個Java平台的任何系統中運行。這種途徑適合於異構的網路環境和軟體的分發。
7、Java語言是可移植的。這種可移植性來源於體系結構中立性,另外,Java還嚴格規定了各個基本數據類型的長度。Java系統本身也具有很強的可移植性,Java編譯器是用Java實現的,Java的運行環境是用ANSI C實現的。
8、Java語言是解釋型的。如前所述,Java程序在Java平台上被編譯為位元組碼格式, 然後可以在實現這個Java平台的任何系統中運行。在運行時,Java平台中的Java解釋器對這些位元組碼進行解釋執行,執行過程中需要的類在聯接階段被載入到運行環境中。
9、Java是高性能的。與那些解釋型的高級腳本語言相比,Java的確是高性能的。事實上,Java的運行速度隨著JIT(Just-In-Time)編譯器技術的發展越來越接近於C++。
10、Java語言是多線程的。在Java語言中,線程是一種特殊的對象,它必須由Thread類或其子(孫)類來創建。通常有兩種方法來創建線程:其一,使用型構為Thread(Runnable) 的構造子將一個實現了Runnable介面的對象包裝成一個線程,其二,從Thread類派生出子類並重寫run方法,使用該子類創建的對象即為線程。值得注意的是Thread類已經實現了Runnable介面,因此,任何一個線程均有它的run方法,而run方法中包含了線程所要運行的代碼。線程的活動由一組方法來控制。 Java語言支持多個線程的同時執行,並提供多線程之間的同步機制(關鍵字為synchronized)。
11、Java語言是動態的。Java語言的設計目標之一是適應於動態變化的環境。Java程序需要的類能夠動態地被載入到運行環境,也可以通過網路來載入所需要的類。這也有利於軟體的升級。另外,Java中的類有一個運行時刻的表示,能進行運行時刻的類型檢查。

㈢ JAVA中什麼是面向對象

在java的學習中,面向對象應該是java技術的重中之重,雖然在生活中沒有對象可以面對,但在技術中還是要一直接觸面對對象,而且不可避免。今天對面向對象來了一個小總結。

一、面向對象的特點:
1、將復雜的事情簡單化。
2、面向對象將以前的過程中的執行者,變成了指揮者。
3、面向對象這種思想是符合現在人們思考習慣的一種思想。
過程和對象在我們的程序中是如何體現的呢?過程其實就是函數;對象是將函數等一些內容進行了封裝。
二、匿名對象使用場景:
1、當對方法只進行一次調用的時候,可以使用匿名對象。
2、當對象對成員進行多次調用時,不能使用匿名對象。必須給對象起名字。
三、在類中定義其實都稱之為成員。成員有兩種:
1、成員變數:其實對應的就是事物的屬性。
2、成員函數:其實對應的就是事物的行為。
所以,其實定義類,就是在定義成員變數和成員函數。但是在定義前,必須先要對事物進行屬性和行為的分析,才可以用代碼來體現。
四、類中怎麼沒有定義主函數呢?
注意:主函數的存在,僅為該類是否需要獨立運行,如果不需要,主函數是不用定義的。主函數的解釋:保證所在類的獨立運行,是程序的入口,被jvm調用。
五、成員變數和局部變數的區別:
1、成員變數直接定義在類中;局部變數定義在方法中,參數上,語句中。
2、成員變數在這個類中有效;局部變數只在自己所屬的大括弧內有效,大括弧結束,局部變數失去作用域。
3、成員變數存在於堆內存中,隨著對象的產生而存在,消失而消失;局部變數存在於棧內存中,隨著所屬區域的運行而存在,結束而釋放。
六、構造函數和一般函數有什麼區別呢?
1、兩個函數定義格式不同。
2、構造函數是在對象創建時,就被調用,用於初始化,而且初始化動作只執行一次。
一般函數,是對象創建後,需要調用才執行,可以被調用多次。
七、創建一個對象都在內存中做了什麼事情?
1、先將硬碟上指定位置的Person.class文件載入進內存。
2、執行main方法時,在棧內存中開辟了main方法的空間(壓棧-進棧),然後在main方法的棧區分配了一個變數p。
3、在堆內存中開辟一個實體空間,分配了一個內存首地址值。new
4、在該實體空間中進行屬性的空間分配,並進行了默認初始化。
5、對空間中的屬性進行顯示初始化。
6、進行實體的構造代碼塊初始化。
7、調用該實體對應的構造函數,進行構造函數初始化。
8、將首地址賦值給p ,p變數就引用了該實體。(指向了該對象)

㈣ java面向對象設計原則和設計模式詳解

Java面向對象設計原則
1) Open-Close Principle(OCP),開-閉原則,講的是設計要對擴展有好的支持,而對修改要嚴格限制。這是最重要也是最為抽象的原則,基本上我們所說的Reusable Software既是基於此原則而開發的。其他的原則也是對它的實現提供了路徑。
2) Liskov Substituition Principle(LSP),里氏代換原則,很嚴格的原則,規則是「子類必須能夠替換基類,否則不應當設計為其子類。」也就是說,子類只能去擴展基類,而不是隱藏或覆蓋基類.
3) Dependence Inversion Principle(DIP),依賴倒換原則,「設計要依賴於抽象而不是具體化」。換句話說就是設計的時候我們要用抽象來思考,而不是一上來就開始劃分我需要哪些哪些類,因為這些是具體。這樣做有什麼好處呢?人的思維本身實際上就是很抽象的,我們分析問題的時候不是一下子就考慮到細節,而是很抽象的將整個問題都構思出來,所以面向抽象設計是符合人的思維的。另外這個原則會很好的支持OCP,面向抽象的設計使我們能夠不必太多依賴於實現,這樣擴展就成為了可能,這個原則也是另一篇文章《Design by Contract》的基石。
4) Interface Segregation Principle(ISP),「將大的介面打散成多個小介面」,這樣做的好處很明顯,我不知道有沒有必要再繼續描述了,為了節省篇幅,實際上我對這些原則只是做了一個小總結,如果有需要更深入了解的話推薦看《Java與模式》,MS MVP的一本巨作!^_^
5) Composition/Aggregation Reuse Principle(CARP),設計者首先應當考慮復合/聚合,而不是繼承(因為它很直觀,第一印象就是「哦,這個就是OO啊」)。這個就是所謂的「Favor Composition over Inheritance」,在實踐中復合/聚合會帶來比繼承更大的利益,所以要優先考慮。
6) Law of Demeter or Least Knowlegde Principle(LoD or LKP),迪米特法則或最少知識原則,這個原則首次在Demeter系統中得到正式運用,所以定義為迪米特法則。它講的是「一個對象應當盡可能少的去了解其他對象」。也就是又一個關於如何松耦合(Loosely-Coupled)的法則。
設計模式:
1)適配器模式
http://eneasy.javaeye.com/blog/174838
2)橋接器模式
http://eneasy.javaeye.com/blog/174892
3)職責鏈模式
http://eneasy.javaeye.com/blog/174906
4)命令模式
http://eneasy.javaeye.com/blog/174896
5)裝飾器模式
http://eneasy.javaeye.com/blog/174840
6)外觀模式
http://eneasy.javaeye.com/blog/174890
7)工廠模式
http://eneasy.javaeye.com/blog/174831
8)享元模式
http://eneasy.javaeye.com/blog/174891
9)代理模式
http://eneasy.javaeye.com/blog/174887
10)單例模式
http://eneasy.javaeye.com/blog/174829
11)狀態模式
http://eneasy.javaeye.com/blog/174897
12)策略模式
http://eneasy.javaeye.com/blog/174894
13)模板模式
http://eneasy.javaeye.com/blog/174893
14)訪問者模式
http://eneasy.javaeye.com/blog/174914

㈤ java面向對象思想如何理解

從現實世界中客觀存在的事物(即對象)出發來構造軟體系統,並在系統構造中盡可能運用人類的自然思維方式,強調直接以問題域(現實世界)中的事物為中心來思考問題,認識問題,並根據這些事物的本質特點,把它們抽象地表示為系統中的對象,作為系統的基本構成單位(而不是用一些與現實世界中的事物相關比較遠,並且沒有對應關系的其它概念來構造系統)。這可以使系統直接地映射問題域,保持問題域中事物及其相互關系的本來面貌。
它可以有不同層次的理解:
從世界觀的角度可以認為:面向對象的基本哲學是認為世界是由各種各樣具有自己的運動規律和內部狀態的對象所組成的;不同對象之間的相互作用和通訊構成了完整的現實世界。因此,人們應當按照現實世界這個本來面貌來理解世界,直接通過對象及其相互關系來反映世界。這樣建立起來的系統才能符合現實世界的本來面目。
從方法學的角度可以認為:面向對象的方法是面向對象的世界觀在開發方法中的直接運用。它強調系統的結構應該直接與現實世界的結構相對應,應該圍繞現實世界中的對象來構造系統,而不是圍繞功能來構造系統。
從程序設計的角度來看,面向對象的程序設計語言必須有描述對象及其相互之間關系的語言成分。這些程序設計語言可以歸納為以下幾類:系統中一切皆為對象;對象是屬性及其操作的封裝體;對象可按其性質劃分為類,對象成為類的實例;實例關系和繼承關系是對象之間的靜態關系;消息傳遞是對象之間動態聯系的唯一形式,也是計算的唯一形式;方法是消息的序列。
面向對象
面向對象(Object
Oriented,OO)是當前計算機界關心的重點,它是90年代軟體開發方法的主流。面向對象的概念和應用已超越了程序設計和軟體開發,擴展到很寬的范圍。如資料庫系統、互動式界面、應用結構、應用平台、分布式系統、網路管理結構、CAD技術、人工智慧等領域。
談到面向對象,這方面的文章非常多。但是,明確地給出對象的定義或說明對象的定義的非常少——至少我現在還沒有發現。其初,「面向對象」是專指在程序設計中採用封裝、繼承、抽象等設計方法。可是,這個定義顯然不能再適合現在情況。面向對象的思想已經涉及到軟體開發的各個方面。如,面向對象的分析(OOA,Object
Oriented
Analysis),面向對象的設計(OOD,Object
Oriented
Design)、以及我們經常說的面向對象的編程實現(OOP,Object
Oriented
Programming)。許多有關面向對象的文章都只是講述在面向對象的開發中所需要注意的問題或所採用的比較好的設計方法。看這些文章只有真正懂得什麼是對象,什麼是面向對象,才能最大程度地對自己有所裨益。這一點,恐怕對初學者甚至是從事相關工作多年的人員也會對它們的概念模糊不清。
面向對象是當前計算機界關心的重點,它是90年代軟體開發方法的主流。面向對象的概念和應用已超越了程序設計和軟體開發,擴展到很寬的范圍。如資料庫系統、互動式界面、應用結構、應用平台、分布式系統、網路管理結構、CAD技術、人工智慧等領域。

㈥ java面向對象程序設計

/*
對象的多態性:動物x=new貓();
函數的多態性:函數重載、重寫

1、多態的體現
父類的引用指向了自己的子類對象
父類的引用也可以接收自己的對象
2、多態的前提
必須是類與類之間只有關系,要麼繼承或實現
通常還有一個前提,存在覆蓋
3、多態的好處
多態的出現大大的提高了程序的擴展性
4、多態的弊端
只能使用父類的引用訪問父類的成員
5、多態的應用

6、注意事項
*/

/*
需求:
貓,狗。
*/

abstractclassAnimal
{
abstractvoideat();
}

classCatextendsAnimal
{
publicvoideat()
{
System.out.println("吃魚");
}
publicvoidcatchMouse()
{
System.out.println("抓老鼠");
}
}

classDogextendsAnimal
{
publicvoideat()
{
System.out.println("吃骨頭");
}
publicvoidkanJia()
{
System.out.println("看家");
}
}

classDuoTaiDemo
{
publicstaticvoidmain(String[]args)
{
function(newCat());
function(newDog());

Animala=newCat();//向上轉型
a.eat();

Catc=(Cat)a;//向下轉型
c.catchMouse();


}

publicstaticvoidfunction(Animala)
{
a.eat();
//用於子類型有限
//或判斷所屬類型進而使用其特有方法
if(ainstanceofCat)
{
Catc=(Cat)a;
c.catchMouse();
}
elseif(ainstanceofDog)
{
Dogc=(Dog)a;
c.kanJia();
}
}


}

㈦ java語言是一種面向對象的程序設計語言,特別

Java語言的主要特點:
1. 跨平台性
所謂的跨平台性,是指軟體可以不受計算機硬體和操作系統的約束而在任意計算機環境下正常運行。這是軟體發展的趨勢和編程人員追求的目標。之所以這樣說,是因為計算機硬體的種類繁多,操作系統也各不相同,不同的用戶和公司有自己不同的計算機環境偏好,而軟體為了能在這些不同的環境里正常運行,就需要獨立於這些平台。
而在Java語言中, Java自帶的虛擬機很好地實現了跨平台性。 Java源程序代碼經過編譯後生成二進制的位元組碼是與平台無關的,但是可被Java虛擬機識別的一種機器碼指令。 Java虛擬機提供了一個位元組碼到底層硬體平台及操作系統的屏障,使得Java語言具備跨平台性。

2. 面向對象
面向對象是指以對象為基本粒度,其下包含屬性和方法。對象的說明用屬性表達,而通過使用方法來操作這個對象。面向對象技術使得應用程序的開發變得簡單易用,節省代碼。Java是一種面向對象的語言,也繼承了面向對象的諸多好處,如代碼擴展、代碼復用等。

3. 安全性
安全性可以分為四個層面,即語言級安全性、編譯時安全性、運行時安全性、可執行代碼安全性。語言級安全性指Java的數據結構是完整的對象,這些封裝過的數據類型具有安全性。編譯時要進行Java語言和語義的檢查,保證每個變數對應一個相應的值,編譯後生成Java類。運行時Java類需要類載入器載入,並經由位元組碼校驗器校驗之後才可以運行。 Java類在網路上使用時,對它的許可權進行了設置,保證了被訪問用戶的安全性。

㈧ 在JAVA中什麼是面向對象的程序設計方法有哪些主要特徵

答:Java是面向對象的程序設計語言,從面向對象這個角度看,體現了如下三個特點:

①封裝性

面向對象的程序設計語言都是把數據和處理數據的操作結合在一起而構成一個整體,這就是對象。對象的使用者只能看到對象的外部特性,比如,其主要功能、如何調用等,而看不到內部如何實現這些功能。作為面向對象的程序設計語言,程序中的數據就是變數,程序對數據作處理則稱為方法。變數和方法都被封裝在對象中。所以,一個對象就是變數和方法的集合,其中變數表明這個對象的狀態,方法實現這個對象所具有的行為,而且在程序中將這些變數和方法進行封裝,使它們成為一個模塊,再用一個名字來代表這個模塊。這樣,以後的更高層的程序設計中,就不必關心某個對象的行為到底是怎樣實現的。可見,將對象封裝就是為了使模塊盡可能少地展現其內部細節,而只是以一種界面來面向外部。

對象的封裝性減少了程序各部分之間的依賴,使程序的復雜性降低,而可靠性提高,並便於修改。
②繼承性

面向對象的程序設計中,對象是從類創建出來的,這一點即將在下面的解答中說明。在
Java中,許多類組成層次化結構。一個類的上一層稱為父類,而下一層稱為子類。一個類可以繼承其父類的變數和方法,而且這種繼承具有傳遞性。就是說,一個類可以繼承其上一層和其再上一層的變數和方法。這種可傳遞的繼承性使得下層多個相似的對象可以共享上層類的數據和程序代碼,而子類又可以在繼承父類的基礎上增添新的內容和功能。這種代碼共享和代碼可增添的繼承特性使Java既靈活方便又提高效率。
③通信相關性

一個對象往往涉及多個行為。體現在程序設計中,一個對象往往包含多個方法,每一個方法對應一個行為。所以,一個對象完成某個動作也就是程序執行相應的方法。於是,就涉及對象之間通過交互來實現復雜的行為,這叫對象之間的通信。

利用通信可以實現一個對象往另一個對象的信息傳遞。信息傳遞涉及三個要素;一是信息接收對象;二是接收對象中用哪個方法完成指定的動作;三是此方法需要的參數。由於信息傳遞的要素非常清晰,所以用在編程中也將很方便。

這種通信相關性使許多復雜功能得以實現,卻又能避免編程的錯綜復雜。

㈨ java面向對象程序設計的基本特徵是

一、封裝
封裝是面向對象四大基本特性之一
二、抽象
抽象的概念則是為了保護基類和方法不被隨意更改的特性,給予編程者在規則下修改方法的一種特性。
三、繼承
繼承特性在實際開發也是經常使用的特性。
四、多態
多態特性則是在編寫類的時候,有些方法可以通過不同的參數完成,但是它又是同一種用途,所以方法名是一樣的,而方法參數則是不同的。

熱點內容
安卓手機如何打開7x文件 發布:2025-02-12 09:43:02 瀏覽:485
c語言等號 發布:2025-02-12 09:39:02 瀏覽:169
ug編程培訓要多少錢 發布:2025-02-12 09:38:27 瀏覽:620
小黃車的密碼怎麼打開 發布:2025-02-12 09:38:26 瀏覽:70
存儲時4k 發布:2025-02-12 09:33:31 瀏覽:87
stn資料庫 發布:2025-02-12 09:32:31 瀏覽:602
iossocket編程 發布:2025-02-12 09:32:20 瀏覽:899
sql語句相等 發布:2025-02-12 09:32:19 瀏覽:351
278源碼 發布:2025-02-12 09:22:40 瀏覽:248
13人牛牛源碼 發布:2025-02-12 09:22:40 瀏覽:155