譯:C#面向對象的基本概念 (Basic C# OOP Concept) 第二部分(封裝,抽象,繼承)

6.封裝

      封裝就是對外部類隱藏成員或變量。我已經說過房子的保安僅僅被限制在房子的入口處,不須要知道屋內發生了什麼。房主對保安隱藏了屋內所發生的任何事,以便更安全。隱藏和限制就被稱爲封裝。c#

      例如咱們有兩個類,一個是」Houseclass」另外一個是」houseSecurityClass」。安全

咱們能夠看到全部的成員都包裹在公開的類houseSecurityClass裏,因此Houseclass類的對象可以訪問 houseSecurityClass裏的任何成員。可是Houseclass有2個成員,一個public一個private。private類不可以被外部的類所訪問。spa

 1 public class houseSecurityClass
 2     {
 3         public int noofSecurity;
 4         public String SecurityName = String.Empty;
 5     }
 6 
 7     public class Houseclass
 8     {
 9         private int noofLockerinHosue = 2;
10         public string OwnerName = String.Empty;
11     }

7.抽象化

      抽象就是顯示和分享一些共同的信息給用戶。接着討論屋子的例子。屋子裏有僕人,可以進入任何房間,作清潔和其餘的事情。房主能夠給僕人全部或者部分進入臥室的權限。咱們能夠看出,程序中private的成員和方法都是僕人所沒有的權限,而public的成員和方法都是僕人所擁有的權限。code

 1 public class HouseServerntClass
 2     {
 3         
 4         private int SaftyLoackerKeyNo = 10001;
 5         public String roomCleanInstructions = "Clean All rooms";
 6 
 7             private void saftyNos()
 8             {
 9                 Console.WriteLine("My SaftyLoackerKeyNo is" + SaftyLoackerKeyNo);
10             }
11 
12         public void roomCleanInstruction()
13         {
14              Console.WriteLine(roomCleanInstructions);
15         }
16 
17     }

8.繼承

      繼承就是爲了代碼的重用。在protected internal訪問修飾符章節咱們已經看到繼承的例子。繼承就是在派生類中可以訪問父類的全部公開的方法和變量等。對象

單層次繼承--一個派生類只繼承一個父類。blog

 1 public class baseClass
 2     {
 3         private void privateMethod()
 4         {
 5             Console.WriteLine("private Method");
 6         }
 7 
 8         public void publicMethod()
 9         {
10             Console.WriteLine("This Method Shared");
11         }
12     }
13     public class DerivedClass : baseClass
14     {
15         static void Main(string[] args)
16         {
17             DerivedClass obj = new DerivedClass();
18             obj.publicMethod();
19             //obj.privateMethod(); //This will be error as private method can not be accessed in Derived Class
20         }
21 
22     }

 

注意:有時候你們可能不清楚什麼是基類,什麼是派生類。基類就是超級類,派生類就是繼承了基類。繼承

下面就是一個繼承的例子,基類GuestVist,派生類HouseOwnerClass。派生類HouseOwnerClass繼承自GuestVisit類。接口

 1 HouseOwnerClass.Here HouseOwnerClass class inherits the base class of GuestVist
 2 class GuestVist
 3     {
 4         public void Guestwelcomemessage()
 5         {
 6             Console.WriteLine("Welcome to our Home");
 7         }
 8         public void GuestName()
 9         {
10             Console.WriteLine("Guest name is: Shanu");
11         }
12       
13     }
14      class HouseOwnerClass : GuestVist
15     {
16         static void Main(string[] args)
17         {
18             HouseOwnerClass obj = new HouseOwnerClass();
19             obj.Guestwelcomemessage();
20             obj.GuestName();
21             Console.ReadLine();
22         }
23     }

多層次繼承--不止一個派生類的例子。下面的例子中咱們能夠看到baseclass派生了DerivedClass1,而DerivedClass1派生了DerivedClass2。所以DerivedClass2能夠訪問DerivedClass1和baseclass兩個類的公開成員和方法。編譯器

 1 public class baseClass
 2     {
 3         private void privateMethod()
 4         {
 5             Console.WriteLine("private Method");
 6         }
 7 
 8         public void publicMethod()
 9         {
10             Console.WriteLine("This Method Shared");
11         }
12     }
13     public class DerivedClass1 : baseClass
14     {
15         public void DerivedClass1()
16         {
17             Console.WriteLine("Derived Class 1");
18         }
19     }
20     public class DerivedClass2 : DerivedClass1
21     {
22         static void Main(string[] args)
23         {
24             DerivedClass2 obj = new DerivedClass2();
25             obj.publicMethod();
26             obj.DerivedClass1();
27             //obj.privateMethod(); //This will be error as private method can not be accessed in Derived Class
28         }
29 
30     }

多重繼承:

.Net支持多重繼承嗎?NOstring

一個類不能支持多重繼承。

什麼是多重繼承?多重繼承就是 一個類繼承多個基類。就是一個派生類繼承多於1個基類。

c#使用了多重繼承會發生什麼?

繼續來看屋子的實例。下面的例子中咱們有一個派生類ouseOwnerClass,兩個基類「GuestVist」 和「FriendsandRelationsClass」.

如今家裏來了兩我的一個客人,一個朋友。所以咱們寫的3個類中派生類繼承了2個類。當我用c#寫一個多重繼承,編譯器會給出警告信息可是能夠執行代碼。警告信息是「Expected and interface」。

 

那麼怎樣才能支持多重繼承呢?

答案是使用接口,接口支持多重繼承。

~~~~今天就到這裏,洗澡睡覺咯

相關文章
相關標籤/搜索