首页 > 代码库 > C#面向对象的基本概念 (Basic C# OOP Concept) 系列二
C#面向对象的基本概念 (Basic C# OOP Concept) 系列二
6.封装
封装就是对外部类隐藏成员或变量。我已经说过房子的保安仅仅被限制在房子的入口处,不需要知道屋内发生了什么。房主对保安隐藏了屋内所发生的任何事,以便更安全。隐藏和限制就被称为封装。
例如我们有两个类,一个是”Houseclass”另一个是”houseSecurityClass”。
我们可以看到所有的成员都包裹在公开的类houseSecurityClass里,所以Houseclass类的对象能够访问 houseSecurityClass里的任何成员。但是Houseclass有2个成员,一个public一个private。private类不能够被外部的类所访问。
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的成员和方法都是仆人所拥有的权限。
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访问修饰符章节我们已经看到继承的例子。继承就是在派生类中能够访问父类的所有公开的方法和变量等。
单层次继承--一个派生类只继承一个父类。
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 : baseClass14 {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 Class20 }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 : GuestVist15 {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 : baseClass14 {15 public void DerivedClass1()16 {17 Console.WriteLine("Derived Class 1");18 }19 }20 public class DerivedClass2 : DerivedClass121 {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 Class28 }29 30 }
多重继承:
.Net支持多重继承吗?NO
一个类不能支持多重继承。
什么是多重继承?多重继承就是 一个类继承多个基类。就是一个派生类继承多于1个基类。
c#使用了多重继承会发生什么?
继续来看屋子的实例。下面的例子中我们有一个派生类ouseOwnerClass,两个基类“GuestVist” 和“FriendsandRelationsClass”.
现在家里来了两个人一个客人,一个朋友。因此我们写的3个类中派生类继承了2个类。当我用c#写一个多重继承,编译器会给出警告信息但是可以执行代码。警告信息是“Expected and interface”。
那么怎样才能支持多重继承呢?
答案是使用接口,接口支持多重继承。
~~~~今天就到这里,洗澡睡觉咯
C#面向对象的基本概念 (Basic C# OOP Concept) 系列二