欧美成人精品手机在线观看_69视频国产_动漫精品第一页_日韩中文字幕网 - 日本欧美一区二区

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

C#繼承

admin
2017年2月7日 18:52 本文熱度 6079

一、繼承的類型
1.1 實(shí)現(xiàn)繼承和接口繼承
C#中既有實(shí)現(xiàn)繼承,也有接口繼承。它們沒有強(qiáng)弱之分,因?yàn)閮煞N繼承都完全內(nèi)置于語(yǔ)言,因此很容易為不同的情形選擇最好的體系結(jié)構(gòu)。
實(shí)現(xiàn)繼承:表示一個(gè)類型派生于一個(gè)基類型,擁有該類型的所有成員字段和函數(shù)。
接口繼承:表示一個(gè)類型只繼承了函數(shù)的簽名,沒有繼承任何實(shí)現(xiàn)。在需要指定該類型具有某些可用的特征時(shí),最好使用這種類型的繼承。接口繼承常常被看做提供了一種契約:通過類型派生于接口,從而保證為客戶提供某個(gè)功能。
1.2 多重繼承
 C#不支持多重實(shí)現(xiàn)繼承,但允許類型派生于多個(gè)接口。所以C#類可以派生于另一個(gè)類和任意多個(gè)接口。
1.3 結(jié)構(gòu)和類
前面說過了結(jié)構(gòu)是值類型,不支持繼承,但是每個(gè)結(jié)構(gòu)都自動(dòng)派生于System.ValueType。實(shí)際上,不能建立結(jié)構(gòu)的類型層次,但結(jié)構(gòu)可以實(shí)現(xiàn)接口。
二、實(shí)現(xiàn)的繼承
類派生于另一個(gè)類,語(yǔ)法如下:

class MyDerivedClass:MyBaseClass
{
 
//function and data members here

}
C#不支持私有繼承,所以基類名上沒有public或private限定符。
類派生于接口,則用都好分隔。
2.1 虛方法
在C#中可以把在方法或者屬性的前面加上virtual,聲明基類的方法為虛方法或者虛屬性,虛方法和虛屬性的規(guī)則相同。語(yǔ)法如下:
class MyBaseClass
{
   
public virtual string
 VirtualMethod()
   
{
     
return "this method is virtual and define in MyBaseClass"
;
   }

}
在C#中,方法在默認(rèn)的情況下不是虛擬的,但(除構(gòu)造函數(shù)以外)可以顯示的聲明。派生類重寫基類的虛方法時(shí),要使用override關(guān)鍵字顯示聲明:
注意:成員字段和靜態(tài)函數(shù)不能被聲明為virtual,因?yàn)檫@個(gè)概念只對(duì)類中的實(shí)例函數(shù)成員有意義。
2.2 隱藏方法
如果在基類和派生類中都聲明了簽名相同的方法,而基類中的方法又沒有聲明為virtual,派生類中的方法也沒有聲明成override,則派生類方法就會(huì)隱藏基類方法。結(jié)果是調(diào)用哪個(gè)類的方法取決于引用實(shí)例的變量類型,而不是實(shí)例本身的類型。
2.3 調(diào)用函數(shù)的基本版本
C#有一種特殊的語(yǔ)法用于從派生類中調(diào)用方法的基本版本:base.<MethodName>()。
2.4 抽象類和抽象函數(shù)
C#中的抽象類要聲明為abstract,抽象類不能實(shí)例化,抽象函數(shù)沒有執(zhí)行代碼,必須在非抽象的派生類中重寫。顯然抽象函數(shù)也是虛擬的,但不需要提供virtual關(guān)鍵字,而用abstract關(guān)鍵字。如果類包含了抽象函數(shù),那么該類也是抽象的,類必須用abstract聲明。
absttact class Building
{
  
public abstract decimal CalculateHeatingCost();//abstract method

}
2.5 密封類和密封方法
C#允許把類和方法聲明為sealed,對(duì)于類來說,這表示不能繼承該類;對(duì)于方法來說,這表示不能重寫該方法。
sealed class FinalClass
{
}
2.6 派生類的構(gòu)造函數(shù)
在創(chuàng)建派生類的實(shí)例時(shí),實(shí)際上會(huì)有多個(gè)構(gòu)造函數(shù)在起作用。實(shí)例化類的構(gòu)造函數(shù)本身不能初始化類,還必須調(diào)用基類中的構(gòu)造函數(shù)。即派生類的實(shí)例構(gòu)造是按層次結(jié)構(gòu)進(jìn)行的,順序是先執(zhí)行基類的構(gòu)造函數(shù),再執(zhí)行派生類的構(gòu)造函數(shù)。
基類的構(gòu)造函數(shù)總是最先調(diào)用,那么派生類的構(gòu)造函數(shù)可以在執(zhí)行的過程中調(diào)用基類的方法、屬性和其他成員,因?yàn)榛愐呀?jīng)構(gòu)造出來了,其他字段也初始化了。
//在結(jié)構(gòu)層次中添加無參數(shù)的構(gòu)造函數(shù)
public abstract class GenericCustomer
{
  
private string
 name;
  
public GenericCustomer():base
()
  
{
    name 
= "myName"
;
  }

}


//在結(jié)構(gòu)層次中添加帶參數(shù)的構(gòu)造函數(shù)
public class Nevermore60Customer:GenericCustomer
{
  
private int
 highCost;
  
public Nevermore60Customer(string name):base
(name)
  
{
    
this.highCost = 0
;
  }

}
三、修飾符
C#中完整的修飾符列表:
修飾符應(yīng)用于說明
public所有類型或成員任何代碼均可以訪問該方法
protected類型和內(nèi)嵌類型的所有成員只有派生的類型能訪問該方法
internal類型和內(nèi)嵌類型的所有成員只能在包含它的程序集中訪問該方法
private所有類型或成員只能在它所屬的類型中訪問該方法
protected internal類型和內(nèi)嵌類型的所有成員只能在包含它的程序集中和派生類型的代碼中訪問該方法

四、接口
接口中只能包含方法、屬性、索引器和事件的聲明。接口不能實(shí)例化,不能有構(gòu)造函數(shù)或字段,也不包含運(yùn)算符重載。接口定義中還不允許聲明成員的修飾符,成員接口總是public的,不能聲明成virtual或者static
4.1 接口的定義和實(shí)現(xiàn)
//定義
namespace InterfaceTest
{
  
public interface
 IBankAccount
  
{
    
void PayIn(decimal
 amount);
    
bool Withdraw(decimal
 amount);
    
decimal
 Balance
    
{
      
get
;
    }

  }

}


//實(shí)現(xiàn)
namespace InterfaceTest
{
  
public class
 SaverAccount:IBankAccount
  
{
    
private decimal
 balance;
    
public void PayIn(decimal
 amount)
    
{
      balance 
+=
 amount;
    }

    
public bool Withdraw(decimal amount)
    
{
      
if(balance >=
 amount)
      
{
        balance 
-=
 amount;
        
return true
;
      }

      Console.WriteLine(
"Withdrawal attempt failed.");
      
return false
;
    }

    
public decimal Balance
    
{
      
get

      
{
        
return
 balance;
      }

    }

    
public override string ToString()
    
{
      
return String.Format("Venus Bank Saver:Balance = {0,6:C}"
,balance);
    }

  }

}

4.2 派生的接口
接口可以繼承,其方式與類的繼承相同。

該文章在 2017/2/7 18:52:32 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved