首页 > 代码库 > 塔 · 第 二 条 约 定

塔 · 第 二 条 约 定

访问修饰符

1、 一个 访问修饰符 定义了一个类成员的范围可见性

2、Public访问修饰符  允许一个类将其成员变量和成员函数暴露给其他的函数和对象。任何公有成员可以被外部的类访问

3、Private访问修饰符 允许一个类将其成员变量和成员函数对其他的函数和对象进行隐藏。只有同一个类中的函数可以访问它的私有成员。

                                  即使是类的实例也不能访问它的私有成员。

namespace ConsoleApplication14 //讨论public与private的区别-----暴露与隐藏
{
    class Rectangle
    {
        //成员变量
        public double length;    //公有变量length
        private double width;    //私有变量width 
    }

    class Test
    {
        static void Main(string[] args)
        {
            Rectangle r = new Rectangle(); //实例化一个对象r
            r.length = 4.5;    //这个语句是正确的 因为length是公有变量 可以被其他类访问  
            r.width = 3.5;     //这个语句是错误的 因为width是私有变量 不能被类Test中的Main方法访问
} } }
class Rectangle                       //讨论private的特点-----可以被同一个类中的函数访问
    {
        //成员变量
        private double length; //私有变量
        private double width;  //私有变量

        public void Acceptdetails()  //必须设为公共函数  如果是私有函数 则类Test不能访问 可以通过该方法实现对私有变量的赋值
        {
            Console.WriteLine("请输入长度:");
            length = Convert.ToDouble(Console.ReadLine());
            Console.WriteLine("请输入宽度:");
            width = Convert.ToDouble(Console.ReadLine());
        }
    }//end class Rectangle    
    class Test
    {
        static void Main(string[] args)
        {
            Rectangle r = new Rectangle();
            r.Acceptdetails();//类Test访问Acceptdetails公有函数,Acceptdetails函数访问私有变量length 和 width,于是实现了在Main方法中间接访问一个类的私有变量
        }
    }

 

4、Protected访问修饰符  允许子类访问它的基类的成员变量和成员函数,不允许其它无关类访问它的基类的成员变量和成员函数,这样有助于实现继承。

class Rectangle
        {
            protected double length;
            protected double width;  //可以被子类(见继承)的函数访问
            public double Area()
            {
                return length * width;
            }
        }

        class Test
        {
            static void Main(string[] args)
            {
                Rectangle r = new Rectangle(); //实例化一个对象r
                r.width = 3.5;     //这个语句是错误的 因为width是保护变量 不能被非子类Test中的Main方法访问
                r.Area();           //这个是正确的
            }
        }

 

5、abstrac类

 

继承

 

1、继承在生活中的例子,牛继承食草动物,食草动物继承动物

 

2、继承符合的关系 : 父类更通用更抽象、子类更抽象更具体

 

3、继承背后的思想就是基于已存在的类来构造新的类,但从已存在类继承时,就重用了它的方法和成员,还可以添加新的方法和成员来定制新类来应对需求。

 

4、子类也叫派生类,父类也叫基类

 

5、C#继承有三种方式——公有继承(默认),私有继承,多重继承(通过接口实现)

<1>公有继承的写法

class Shape 
   {
      public void setWidth(int w)
      {
         width = w;
      }
      public void setHeight(int h)
      {
         height = h;
      }
      protected int width;
      protected int height;
   }

   // 派生类
   class Rectangle: Shape  //继承了基类原有的方法和成员变量
   {
      public int getArea()  //先增添了getArea方法
      { 
         return (width * height); 
      }
   }
   
   class RectangleTester
   {
      static void Main(string[] args)
      {
         Rectangle Rect = new Rectangle();//实例化子类

         Rect.setWidth(5);   //子类继承了基类的setWidth方法
         Rect.setHeight(7);

         // 打印对象的面积
         Console.WriteLine("总面积: {0}",  Rect.getArea());
         Console.ReadKey();
      }
   }

<2>私有继承

 

塔 · 第 二 条 约 定