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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

java 计算器类图_多态计算器(封装、继承、多态、简单工厂)

發布時間:2024/9/27 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 计算器类图_多态计算器(封装、继承、多态、简单工厂) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一.封裝

向對象程序設計中,一個非常重要的技術便是封裝,也就是把客觀事物封裝成抽象的類,并且類可以把自己的數據和方法只讓可信的類或者對象操作,對不可信的進行信息隱藏。這樣做的好處在于可以使類內部的具體實現透明化,只要其他代碼不依賴類內部的私房數據,你便可以安心修改這些代碼。此外,這樣做也是出于安全方面的考慮,如果代表網上支付卡密碼的變量隨便就可以被訪問到,這樣的系統誰還敢用呢?

訪問修飾符:

Private:只有類本身能存取.

Protected:類和派生類可以存取.

Internal:只有同一個項目中的類可以存取.

Protected Internal:是Protected和Internal的結合.

Public:完全存取.

實例代碼

class Operation //運算基類

{private double _numberA = 0;private double _numberB = 0;public doubleNumberA

{get { return_numberA; }set { _numberA =value; }

}public doubleNumberB

{get { return_numberB; }set { _numberB =value; }

}public virtual double GetResult() //定義虛方法

{double result = 0;returnresult;

}

}

上面 Operation類中字斷與方法 就實現了一個封裝。

二.多態

1、多態:同一操作作用于不同的對象,可以有不同的解釋,產生不同的執行結果。在運行時,可以通過指向基類的指針,來調用實現派生類中的方法。

編譯時的多態性:

編譯時的多態性是通過重載來實現的。對于非虛的成員來說,系統在編譯時,根據傳遞的參數、返回的類型等信息決定實現何種操作。

運行時的多態性:

運行時的多態性就是指直到系統運行時,才根據實際情況決定實現何種操作。C#中,運行時的多態性通過虛成員實現。

編譯時的多態性為我們提供了運行速度快的特點,而運行時的多態性則帶來了高度靈活和抽象的特點。

2、實現多態:

接口多態性。

繼承多態性。

通過抽象類實現的多態性。

3、override關鍵字:

重寫父類中的virtual修飾的方法,實現多態。

三.繼承

繼承主要實現重用代碼,節省開發時間。

1、C#中的繼承符合下列規則:

繼承是可傳遞的。如果C從B中派生,B又從A中派生,那么C不僅繼承了B中聲明的成員,同樣也繼承了A中的成員。Object類作為所有類的基類。

派生類應當是對基類的擴展。派生類可以添加新的成員,但不能除去已經繼承的成員的定義。

構造函數和析構函數不能被繼承。除此之外的其它成員,不論對它們定義了怎樣的訪問方式,都能被繼承。基類中成員的訪問方式只能決定派生類能否訪問它們。

派生類如果定義了與繼承而來的成員同名的新成員,就可以覆蓋已繼承的成員。但這并不因為這派生類刪除了這些成員,只是不能再訪問這些成員。

類可以定義虛文法、虛屬性以及虛索引指示器,它的派生類能夠重載這些成員,從而實現類可以展示出多態性。

2、new關鍵字

如果父類中聲明了一個沒有friend修飾的protected或public方法,子類中也聲明了同名的方法。則用new可以隱藏父類中的方法。(不建議使用)

3、base關鍵字

base 關鍵字用于從派生類中訪問基類的成員:

調用基類上已被其他方法重寫的方法。

指定創建派生類實例時應調用的基類構造函數

子類繼承基類,并重寫父類計算虛方法

classOperationAdd : Operation

{public override doubleGetResult()

{double result = 0;

result= NumberA +NumberB;returnresult;

}

}classOperationSub : Operation

{public override doubleGetResult()

{double result = 0;

result= NumberA -NumberB;returnresult;

}

}classOperationMul : Operation

{public override doubleGetResult()

{double result = 0;

result= NumberA *NumberB;returnresult;

}

}classOperationDiv : Operation

{public override doubleGetResult()

{double result = 0;if (NumberB != 0)

result= NumberA /NumberB;elseConsole.WriteLine("除數不能為零!\n");returnresult;

}

}

運算對象生產工廠

class OperationFactory //運算對象生產工廠

{public static Operation createOperation(stringoperation)

{

Operation oper= null;switch(operation)

{case "+":

{

oper= newOperationAdd();break;

}case "-":

{

oper= newOperationSub();break;

}case "*":

{

oper= newOperationMul();break;

}case "/":

{

oper= newOperationDiv();break;

}

}returnoper;

}

}

Main方法

classProgram

{static void Main(string[] args)

{

Operation oper;

Console.WriteLine("請輸入運算符:\r\n");

oper=OperationFactory.createOperation(Console.ReadLine());//調用簡單工廠類

Console.WriteLine("請輸入第一個數:\r\n");

oper.NumberA= int.Parse(Console.ReadLine());

Console.WriteLine("請輸入第二個數:\r\n");

oper.NumberB= int.Parse(Console.ReadLine());double result =oper.GetResult();

Console.WriteLine("運算結果:\r\n");

Console.WriteLine(oper.NumberA.ToString()+"+"+ oper.NumberB.ToString() + "=" +result.ToString());

Console.ReadLine();

}

簡單計算器的類圖

總結

以上是生活随笔為你收集整理的java 计算器类图_多态计算器(封装、继承、多态、简单工厂)的全部內容,希望文章能夠幫你解決所遇到的問題。

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