導航:首頁 > 編程語言 > net面向對象編程

net面向對象編程

發布時間:2022-10-17 19:25:58

❶ asp.net 支持面向對象編程

肯定的啊,asp.net用的是C#語言啊,而c#本身就是一門高級語言,是一門面向對象的編程語言啊。所以,asp.net支持面向對象編程。

❷ C#和.NET向java好轉嗎

懂C#的話,轉Java也不是那麼難,畢竟,語言語法還是相似的。嘗試了下Java,說說自己的體會吧。

1Java和C#都是完全面向對象的語言

在面向對象編程的三大原則方面,這兩種語言接近得不能再接近。不過也有一些差別,不過不多,稍微習慣下就好了,

比如:

集合:兩種語言都有集合ArrayList,還有通過鍵訪問值的Java中是HashMap而c#中是HashTable。c#比Java多泛型集合List與Dictionary更容易了,無需拆箱裝箱了,更安全了。

繼承:Java中用關鍵字extends,c#只用「:」就行了。調用父類的構造方法Java用super關鍵字,而c#用base關鍵字。

屬性:java中定義和訪問均要用get和set方法,可以不成對出現。c#中是真正的屬性,定義時get和set必須同時出現,房問時用。號即可。不用get,set。

事件。Java中沒有(Java通過實現自定義偵聽器類執行事件)。C#定義了類似於函數指針的委託來實現事件。等等。。。

2Java Web和ASP.NET也是有相似的

java web的核心是Servlet,Jsp其實本質都是Servlet,而Servlet的流程可以比較清晰看到整個前後台是怎麼工作的,類似.NET的ashx一般處理程序,Java是MVC的主要倡導者,

隨著web技術發展,Servlet主要被當作Control使用,Jsp作為View使用,這在許多MCV框架有所體現。得益於開源社區的活躍,流行的Java MVC框架都比較成熟了。而ASP.NET MVC(雖然我沒有用過,大概了解過)感覺使用起來應該不是很舒服把。貌似ASP.NET MVC也還沒有推廣開來。

很多.NET程序員做Web還是停留在服務端控制項。不是Webform不好,而是微軟會把我們寵壞。感覺Webform不夠優雅,耦合太高,個人接觸過Java Web後覺得MVC在大多場景下更勝一籌。

目前接觸過的MVC框架是Struts2,常用在展示層,前台頁面展示與控制頁面跳轉。建立一個工程,都會有一個web.xml文件,是整個工程的主配置文件。其它框架的集成首先是在這個配置文件裡面進行的。

Struts也有一個主配置文件struts.xml,工程中所有配置的Action都是在這個配置文件中配置的。Action是Struts的核心,其實就是控制頁面跳轉用的,每個頁面和後台的數據交互或者跳轉到另外的頁面都通過action進行。

3Java的框架五花八門

Java的框架五花八門,有名的全功能棧Spring框架,MVC框架Struts2,SpringMVC(Spring的子項),數據持久層框架 MyBatis,Hibernate,模板引擎FreeMarker,Velocity。

框架有框架的好處也有壞處,使用框架無非就是提高生產力,降低測試維護成本,保證系統性能。但是不適合的使用框架只會加重系統復雜度,降低系統性能,增加維護難度。什麼時候使用框架什麼時候不用,要詳細斟酌在做取捨。

目前只接觸過Struts2,因為做的一些小項目直接Servlet+Jsp+Jdbc就好了,打好基礎還是比較重要的,以後在項目慢慢接觸使用吧。

總的來說吧,微軟的生態環境的不給力,留給.NET的面越來越窄,Java生態圈的局面前途一片光明,選擇開源的Java是有原因的,豐富的資料,各種解決方案都可選擇。

❸ asp.net 是不是面向對象的網路編程

asp 和 asp.net不一樣的 我以前也是學asp的 但是發現入門不是很容易 首先還是要學學面向對象的思想 可以學C# 結合一些入門的書學起來可能好一些
你要學的大概有
VisualStudio 2005或者2008工具使用
C#語法
asp.Net的那些對象和asp的那些很相似 相信你學過asp也不難的
主要還是VS工具的熟練應用和常用的一些控制項
以上基本上可以幫你入門

至於你說的區別 基本上在布局方面還是採用HTML控制項比如表格.文字.Div
而在編程方面都是伺服器控制項 我現在基本上都永不到html那些控制項了
在VS裡面應該說100%我現在都是拖動那些伺服器控制項
區別就是一個能通過.cs編程 而一個你就需要用js腳本來編程

❹ .net(C#)和VC.net的區別

我帶你詳細分析一下Vc.net 和 .net(C#)的區別。
首先 這是兩種不同的語言C++ 和 C#。 但狹義上的Vc.net 和 .net(C#)在同一個.net平台。
所謂 VC.net就是 c++/cli。擁有一些新的C++語法,但同時兼容ANSI C++的標准,保留了傳統開發的可延續性。
而C# 語言 只能在.net平台下開發。

以下是我的建議:
如果你要程序的高效性,同時兼顧.net框架,且要使用傳統非託管語言(及pascal,gcc/g++,basic)的某些功能,建議使用c++/cli。
如果你完全在.net框架下開發,保證程序的完全面對對象性能,C#的優越性超過了C++,可以是你的工作更高效。

❺ .NET團隊「每周一題」(二)——面向對象編程的特點

封裝

封裝最好理解了。封裝是面向對象的特徵之一,是對象和類概念的主要特性。

封裝,也就是把客觀事物封裝成抽象的類,並且類可以把自己的數據和方法只讓可信的類或者對象操作,對不可信的進行信息隱藏。
繼承

面向對象編程 (OOP) 語言的一個主要功能就是「繼承」。繼承是指這樣一種能力:它可以使用現有類的所有功能,並在無需重新編寫原來的類的情況下對這些功能進行擴展。

通過繼承創建的新類稱為「子類」或「派生類」。

被繼承的類稱為「基類」、「父類」或「超類」。

繼承的過程,就是從一般到特殊的過程。

要實現繼承,可以通過「繼承」(Inheritance)和「組合」(Composition)來實現。

在某些 OOP 語言中,一個子類可以繼承多個基類。但是一般情況下,一個子類只能有一個基類,要實現多重繼承,可以通過多級繼承來實現。

繼承概念的實現方式有三類:實現繼承、介面繼承和可視繼承。

Ø 實現繼承是指使用基類的屬性和方法而無需額外編碼的能力;

Ø 介面繼承是指僅使用屬性和方法的名稱、但是子類必須提供實現的能力;

Ø 可視繼承是指子窗體(類)使用基窗體(類)的外觀和實現代碼的能力。

在考慮使用繼承時,有一點需要注意,那就是兩個類之間的關系應該是「屬於」關系。例如,Employee 是一個人,Manager 也是一個人,因此這兩個類都可以繼承 Person 類。但是 Leg 類卻不能繼承 Person 類,因為腿並不是一個人。

抽象類僅定義將由子類創建的一般屬性和方法,創建抽象類時,請使用關鍵字 Interface 而不是 Class。

OO開發範式大致為:劃分對象→抽象類→將類組織成為層次化結構(繼承和合成) →用類與實例進行設計和實現幾個階段。
多態

多態性(polymorphisn)是允許你將父對象設置成為和一個或更多的他的子對象相等的技術,賦值之後,父對象就可以根據當前賦值給它的子對象的特性以不同的方式運作。簡單的說,就是一句話:允許將子類類型的指針賦值給父類類型的指針。

實現多態,有二種方式,覆蓋,重載。

覆蓋,是指子類重新定義父類的虛函數的做法。

重載,是指允許存在多個同名函數,而這些函數的參數表不同(或許參數個數不同,或許參數類型不同,或許兩者都不同)。

其實,重載的概念並不屬於「面向對象編程」,重載的實現是:編譯器根據函數不同的參數表,對同名函數的名稱做修飾,然後這些同名函數就成了不同的函數(至少對於編譯器來說是這樣的)。如,有兩個同名函數:function func(p:integer):integer;和function func(p:string):integer;。那麼編譯器做過修飾後的函數名稱可能是這樣的:int_func、str_func。對於這兩個函數的調用,在編譯器間就已經確定了,是靜態的(記住:是靜態)。也就是說,它們的地址在編譯期就綁定了(早綁定),因此,重載和多態無關!真正和多態相關的是「覆蓋」。當子類重新定義了父類的虛函數後,父類指針根據賦給它的不同的子類指針,動態(記住:是動態!)的調用屬於子類的該函數,這樣的函數調用在編譯期間是無法確定的(調用的子類的虛函數的地址無法給出)。因此,這樣的函數地址是在運行期綁定的(晚邦定)。結論就是:重載只是一種語言特性,與多態無關,與面向對象也無關!引用一句Bruce Eckel的話:「不要犯傻,如果它不是晚邦定,它就不是多態。」

那麼,多態的作用是什麼呢?我們知道,封裝可以隱藏實現細節,使得代碼模塊化;繼承可以擴展已存在的代碼模塊(類);它們的目的都是為了——代碼重用。而多態則是為了實現另一個目的——介面重用!多態的作用,就是為了類在繼承和派生的時候,保證使用「家譜」中任一類的實例的某一屬性時的正確調用。

❻ .net平台上怎麼理解「面向對象」的概念

1。類與實例(面向對象編程--Object-Oriented Programming)對象是一個自包含的實體,用一組可識別的特性和行為來表示。類就是具有相同的屬性和功能的對象的抽象的集合。實例就是真實的對 象,實例化就是創建對象的過程,使用new關鍵字類創建。

2。構造方法構造方法又叫構造函數,其實就是對類進行初始化。構造方法與類同名,無返回值,也不需要void, 在new時候調用。所有類都有構造方 法,如果你不編碼則系統默認生成空的構造方法,若你 有定義的構造方法,那麼默認的構造方法就會失效了。

3。方法重載方法重載提供了創建同名的多個方法的能力,但這些方法需要使用不同的參數類型。(並不是只有構造方 法可以重載,普通方法也是可以重載的)方法重載時,兩個方法必須要方法名相同,但參數類型或個數必須要有所不同。

4。屬性與修飾符屬性是一個方法或一對方法,但在調用它的代碼看來,它是一個欄位,即屬性適合於以欄位的方式使 用方法調用的場合。欄位是存儲類要滿足其設計所需要的數據,欄位是與類相關的變數。

5。封裝每個對象都包含它能進行操作所需要的所有信息,這個特性稱為封裝,因此對象不必依賴其他對象來完成自己 的操作。

第一,良好的封裝能夠減少耦合;

第二,類內部的實現可以自由地修改;

第三,類具有清晰的對外介面。

6。繼承對象的繼承代表了一種『is-a』的關系,如果對象A和B,可以描述為『B』是『A』,則表明B可以繼 承A。實際上,繼承者可以理解為是對 被繼承者的特殊化,因為它除了具有被繼承者的特性外,還具有自己獨有的個性。

如果子類繼承於父類,第一,子類擁有分類非private的屬性和功能;第二,子類具有自己的屬性和功能,即子類可以擴展父類沒有的屬性和功能;第 三,子類還可以以自己的方式實現父類的功能(方法重寫)子類從它的父類中繼承的成員有方法,域,屬性,事件,索引指示器,但對於構造方法,有一些 特

殊它不能被繼承,只能被調用。對於調用父類的成員,可以用base關鍵字。繼承是有缺點的,那就是父類變,則子類不得不變;繼承會破壞包裝,父類實 現細節暴露給子類,其實質是增大了兩個類間的耦合性。當兩個類之間具備『is-a』的關系時,就可以考慮用繼承了,但當是『has-a』關系時就不適合用 繼承了。

7。多態表示不同的對象可以執行相同的動作,但要通過他們自己的實現代碼來執行。

第一,子類以父類的身份出現

第二,子類在工作時以自己的方式來實現

第三,子類以父類的身份出現時,子類特有的屬性和方法不可以使用。為了使子類的實例完全接替來自父類的成員,父類必須將該成員聲明為虛擬的。

(virtual)通常除了欄位不能虛擬其他屬性,事件,索引器,方法都可以虛擬。子類可以使用override關鍵字,將父類實現替換為自己的實 現,這就是方法重寫Override或叫做方法覆蓋。多態時對對象的聲明必須是父類,而不是子類,實例化的對象是子類,這樣才能實現多態。不同的對象可以 執行相同的動 作,但要通過它們自己的實現代碼來執行。多態的原理是當方法被調用時,無論對象是否被轉換為其父類,都只有位於對象繼承鏈最末端的方法實現會被調用。也就 是 說,虛方法是按照其運行時類型而非編譯時類型進行動態綁定調用的。

8。抽象類(abstract)c#運行把類和方法聲明為abstract,即抽象類和抽象方法 (abstract)

第一,抽象類不能實例化;

第二,抽象方法是必須被子類重寫的方法;

第三,如果類中包含抽象方法,那麼類就必須定義為抽象類不論是否還包含其他一般方法。

抽象類擁有盡可能多的共同代碼,擁有盡可能少的數據。抽象類通常代表一個抽象概念,它提供一個繼承的出發點,當設計一個新的抽象類時,一定是用來繼 承的,所以,在一個以繼承關系形成的等級結構裡面,樹葉節點應當是具體類,而樹枝節點均應當是抽象類。也就是說具體的類不是用來繼承的

9。介面(interface)介面是把隱式公共方法和屬性組合起來,以封裝特定功能的一個集合。一旦類實現了 介面,類就可以支持介面所指定的所有 屬性和成員。

聲明介面在語法上與聲明抽象類完全相同,但不允許提供介面中任何成員的執行方式。所以介面不能實例化,不能有構造方法和欄位;不能有修飾符 (eg:public,private)不能聲明虛擬的或靜態的等。實現介面的類就必須要實現介面中所有方法和屬性。一個類可以支持多個介面,多個類也可 以支持相同的介面。

介面用interface聲明,而不是class,介面名稱前要加『I',介面中的方法或屬性前面不能有修飾符,方法沒有方法體。抽象類與介面的異 同抽象類可以給出一些成員的實現,介面卻不包含成員的實現;抽象類的抽象成員可以被子類部分實現,介面的成員需要實現類完全實現;一個類只能繼承一個抽象 類,但可以實現多個介面;

第一,類時對對象的抽象;抽象類時對類的抽象;介面是對行為的抽象。介面是對類的局部(行為)進行的抽象,而抽象類是對類整體(欄位,屬性,方法) 的抽象。

如果只關注行為抽象,那麼可以認為介面就是抽象類。總之,不論是介面,抽象類,類甚至是對象,都是在不同層次,不同角度進行抽象的結果,他們的共性 就是抽象

第二,如果行為跨越不同了類的對象,可使用介面;對於一些相似的類的對象,用繼承抽象類。

第三,從設計角度講,抽象類是從子類中發現了公共的東西,泛化出父類,然後子類繼承父類,而介面是根本不知子類的存在,方法如何實現還不確認,預先 定義。

10。集合(ArrayList)可以根據使用大小按需求動態增加,不用受事先設置其大小的控制。還有就是可以 隨意地添加,插入或移除某一范圍元 素,比數組要方便。

ArrayList 不是類型安全的(值類型裝箱到Object對象)裝箱就是把值類型打包到Object引用類型的一個實例中。拆箱是指從對象中提取類型。

11.泛型是具有佔位符(類型參數)的類,結構,介面和方法,這些佔位符是類,結構,介面和方法所存儲或使用的 一個或多個類型的佔位符。

泛型集合類可以將參數型參數用作它所存儲的對象的類型的佔位符;類型參數作為其欄位的類型和其方法的參數類型出現。通常情況下,都建議使用泛型集 合,因為我這樣可以獲得類型安全的直接優點而不需要從基集合類型派生並實現類型特定的成員。

此外,如果集合元素為值類型,泛型集合類型的性能通常優於對應的非泛型集合類型(並優於從非泛型基集合類型派生的類型),因為使用泛型時不必對元素 進行裝箱。

12。委託和事件(delegate,event)委託時對函數的封裝,可以當作給方法的特徵指定一個名稱。而事件則是委託的一種特殊形式,當發生 有意義的事情時,事件對象處理通知過程。委託是一種引用方法的類型。一旦為委託分配了方法,委託將與該方法具有完全相同的行為。在發生其他類或對象關注的 事情時,類或對象可通過事件通知它們。

❼ 什麼是 .net

正如三樓所說的.net是微軟公司推出的編程框架,也可以說是一種環境。可以運用多種語言進行編程,如:C++、C#、VB、Java等。.net是用於構建Internet集成服務平台的最新框架,這種集成服務平台允許各種系統環境下的應用程序通過網際網路進行通信和共享數據。.net框架主要由三個主要組成部分:公共語言運行時(CLR)、服務框架(Services Framework)、兩類應用摸板(傳統的Windows應用程序摸板和基於ASP.NET的面向WEB的應用程序摸板)。

❽ vb.net是面向對象的編程軟體嗎

不是,VB.NET 是面向過程的編程。

❾ vb. net是面向對象的編程語言是對嗎

VB.net
相對VB出現巨大變化的是語意,從運行於基於COM的deterministic,
reference-counted的引擎之上的編程環境,轉變為全面面向對象的基於.NET
Framework的語言。.NET
Framework包括了CLR(使用通用垃圾收集機制和JIT編譯引擎的虛擬機)和大量的類庫。VB開發者進入VB.NET要面對新增的大量類庫的問題。
上述變化表明了許多在運行及維護相關優化事宜下面的假定,一些VB6函數和庫不再存在而其它的仍然可用,但是比不上.NET語言中自帶的可替換的函數和庫來得高效。即使它們可被編譯,但大多從VB6轉換而來的應用將需要一定程度上的重構(refactoring),以全面利用新語言的優點。在有關句法、應用調試、部署和術語等方面的變化,有大量的文檔可以參考。

❿ 深入.NET面向對象編程題目,求解決

public class Employee
{
string _name;
int _age;
DateTime _begin;

public string Name
{
get { return _name; }
set { _name = value; }
}
public int Age
{
get { return _age; }
set { _age = value; }
}
public DateTime Begin
{
get { return _begin; }
set { _begin = value; }
}

public Employee()
{

}

public Employee(string name, int age, DateTime begin)
{
this._name = name;
this._age = age;
this._begin = begin;
}

public virtual void SayHi()
{
Console.WriteLine("hi,我是一個普通員工");
}
}

public class Programmer : Employee
{
List<string> _language;
public List<string> Language
{
get { return _language; }
set { _language = value; }
}

public Programmer()
{
}

public Programmer(string name, int age, DateTime begin, List<string> language)
: base(name, age, begin)
{
this._language = language;
}

public override void SayHi()
{
Console.WriteLine("hi,我是一個程序員");
}
}

public class Manager : Programmer
{
List<string> _project;
public List<string> Project
{
get { return _project; }
set { _project = value; }
}

public Manager()
{
}

public Manager(string name, int age, DateTime begin, List<string> language, List<string> project)
: base(name, age, begin, language)
{
this._project = project;
}

public override void SayHi()
{
Console.WriteLine("hi,我是一個項目經理");
}
}

閱讀全文

與net面向對象編程相關的資料

熱點內容
rf3148編程器 瀏覽:505
浙江標准網路伺服器機櫃雲主機 瀏覽:587
設置網路的伺服器地址 瀏覽:600
java圖形界面設計 瀏覽:751
純前端項目怎麼部署到伺服器 瀏覽:538
瓜子臉程序員 瀏覽:505
如何保證伺服器優質 瀏覽:94
小微信aPP怎麼一下找不到了 瀏覽:299
演算法纂要學術價值 瀏覽:975
程序員你好是什麼意思 瀏覽:801
倩女幽魂老伺服器如何玩 瀏覽:561
電子鍾單片機課程設計實驗報告 瀏覽:999
看加密頻道 瀏覽:381
程序員算不算流水線工人 瀏覽:632
三星電視我的app怎麼卸載 瀏覽:44
簡述vi編譯器的基本操作 瀏覽:507
讓程序員選小號 瀏覽:91
加強數字貨幣國際信息編譯能力 瀏覽:584
購買的app會員怎麼退安卓手機 瀏覽:891
程序員的種類及名稱 瀏覽:295