zoukankan      html  css  js  c++  java
  • 译: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 : 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支持多重继承吗?NO

    一个类不能支持多重继承。

    什么是多重继承?多重继承就是 一个类继承多个基类。就是一个派生类继承多于1个基类。

    c#使用了多重继承会发生什么?

    继续来看屋子的实例。下面的例子中我们有一个派生类ouseOwnerClass,两个基类“GuestVist” 和“FriendsandRelationsClass”.

    现在家里来了两个人一个客人,一个朋友。因此我们写的3个类中派生类继承了2个类。当我用c#写一个多重继承,编译器会给出警告信息但是可以执行代码。警告信息是“Expected and interface”。

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

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

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

  • 相关阅读:
    Java学习——字符串
    Java学习——字符串
    【费马小定理+快速幂取模】ACM-ICPC 2018 焦作赛区网络预赛 G. Give Candies
    【费马小定理+快速幂取模】ACM-ICPC 2018 焦作赛区网络预赛 G. Give Candies
    Java学习——Eclipse下载,java配置,新建,输入输出
    Java学习——Eclipse下载,java配置,新建,输入输出
    python使用scikit-learn计算TF-IDF
    scanf,printf函数细节
    UVA 4855 Hyper Box
    poj 2001 Shortest Prefixes(字典树)
  • 原文地址:https://www.cnblogs.com/yplong/p/4249108.html
Copyright © 2011-2022 走看看