译: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”。

 

那么怎样才能支持多重继承呢?

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

~~~~今天就到这里,洗澡睡觉咯

相关文章
相关标签/搜索