面向对象之三大特色,访谈修饰符

图片 1

面向对象之三大特色,访谈修饰符

学到封装就能想到访谈修饰符,谈到拜候修饰符,就能想到访谈等第,可能说是访谈技能的分寸。当然也至关重要暗中认可的拜望类型。

封装 被定义为”把四个或多少个品种密闭在叁个物理的要么逻辑的包中”。在面向对象程序设计方法论中,封装是为着避防对实现细节的拜谒。

  1. C# 方法默许访谈等级 : private
    (私有的卡塔 尔(阿拉伯语:قطر‎ 
  2. C# 类暗中同意访问品级 : internal   
    (内部的卡塔尔 

空泛和打包是面向对象程序设计的有关性情。抽象允许相关音讯可视化,封装则使开垦者达成所需级其他空洞

封装 被定义为”把叁个或几个类型密封在三个物理的只怕逻辑的包中”。在面向对象程序设计方法论中,封装是为了防御对贯彻细节的拜望。

C#
封装根据具体的供给,设置使用者的拜谒权限,并因而 访谈修饰符 来实现。

抽象和打包是面向对象程序设计的连带本性。抽象允许相关音信可视化,封装则使开发者兑现所需级其他空洞

一个 做客修饰符 定义了二个类成员的限量和可以预知性。C#
扶持的拜谒修饰符如下所示:

面向对象之三大特色,访谈修饰符。C#
封装依据现实的急需,设置使用者的拜见权限,并由此 做客修饰符 来实现。

  • Public:全部指标都能够访问;
  • Private:对象自己在对象内部能够访谈;
  • Protected:唯有该类对象及其子类对象足以访谈
  • Internal:同三个前后相继集的对象能够访问;
  • Protected internal:二个顺序集内的对象,或许该类对象及其子类能够访谈

一个 访问修饰符 定义了叁个类成员的节制和可以知道性。C#
援救的探问修饰符如下所示:

后生可畏旦未有一些名访谈修饰符,则接收类成员的私下认可访谈修饰符,即为 private

  • public:所有目标都得以访谈;(公共的卡塔尔国
  • private:对象自笔者在对象内部能够访谈;(私有的卡塔 尔(英语:State of Qatar)
  • protected:唯有该类对象及其子类对象能够访谈;(受保险的卡塔尔国
  • internal:同八个程序集的对象能够访谈;(内部的卡塔尔国
  • protected
    internal:访问限于当前途序集或派生自包涵类的项目。(内部受保证的卡塔 尔(阿拉伯语:قطر‎

Public 访谈修饰符

Public
访问修饰符允许一个类将其成员变量和分子函数揭发给其余的函数和对象。任何国有成员能够被外表的类访问。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program1
    {
        public int a;
        public int b;

        public int AddData()
        {
            return a + b;
        }
        public void Display()
        {
            Console.WriteLine("a: {0}", a);
            Console.WriteLine("b: {0}", b);
            Console.WriteLine("和: {0}", AddData());
        }
    }

    class Program2
    {
        static void Main(string[] args)
        {
            Program1 a = new Program1();
            a.a = 3;
            a.b = 5;
            a.Display();
            Console.ReadLine();
        }
    }
}

当上边的代码被编写翻译和实施时,它会发生下列结果:

a: 3
b: 5
和: 8

上边程序中,class program1 中变量和函数被声称为 public,
因而能够被下边包车型大巴program第22中学Main(卡塔 尔(英语:State of Qatar)函数 使用program1类的实例
访问到。

对于访谈修饰符中 涉及的程序集和命名空间 :   

Private 访谈修饰符

除非同叁个类中的函数可以访谈它的个人成员,即便是类的实例也不可能访谈它的村办成员。假如将地点程序类
program第11中学 a,b前的宣示改为 private
,在用类的实例对它们举行访问时会现身下边提醒:

图片 1

 

在此种评释下,在任何类中为了利用(操作卡塔 尔(阿拉伯语:قطر‎那些数值,可以在此些数值所在的类下编写能够操作那几个数值的函数,然后在别的类中访谈这个函数,程序如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program1
    {
        private int a;
        private int b;

        public void Acceptdetails()
        {
            Console.WriteLine("请输入a:");
            a = Convert.ToInt16(Console.ReadLine());
            Console.WriteLine("请输入b:");
            b = Convert.ToInt16(Console.ReadLine());
        }
        public int AddData()
        {
            return a + b;
        }
        public void Display()
        {
            Console.WriteLine("a: {0}", a);
            Console.WriteLine("b: {0}", b);
            Console.WriteLine("和: {0}", AddData());
        }
    }

    class Program2
    {
        static void Main(string[] args)
        {
            Program1 a = new Program1();
            a.Acceptdetails();
            a.Display();
            Console.ReadLine();
        }
    }
}

运转结果如下:

请输入a:
5
请输入b:
4
a: 5
b: 4
和: 9

  

程式集:IL+元数据

Protected 访谈修饰符

Protected
访问修饰符允许子类访谈它的基类的成员变量和成员函数。那样有援助完毕持续。

固然说命名空间是类库的逻辑协会格局,那么程序集就是类库的概况社团方式。唯有同期钦命项目所在的命名空间及落实该项目标程序集,本事完全约束该品种。(摘抄自《明白.NET宗旨手艺–原来与架构》 电子工业出版社卡塔尔国

Internal 访谈修饰符

Internal
访谈表达符允许三个类将其成员变量和成员函数揭破给当下前后相继中的别的函数和对象。换句话说,带有
internal
访谈修饰符的其余成员能够被定义在该成员所定义的应用程序内的别样类或方法访问。

 

诸如咱们要用A类,则须求把带有A类的程序集(即*.DLL卡塔 尔(英语:State of Qatar)引用到该工程中(物理卡塔尔;而在前后相继中要评释A类的命名空间(逻辑卡塔 尔(英语:State of Qatar)。

Protected Internal 访谈修饰符

Protected Internal
访谈修饰符允许在本类,派生类或然隐含该类的顺序聚集访问。那也被用于落到实处持续。

  

 

 

Public(公共的) 访谈修饰符

Public
访问修饰符允许一个类将其成员变量和分子函数暴光给其余的函数和对象。任何国有成员能够被表面包车型客车类访谈

上边是个小例子

using System;

namespace ConsoleApp1
{
    class Rectangle
    {
        public double length { get; set; }
        public double width { get; set; }

        public double Getarea()
        {
            return length * width;
        }

        public void Display()
        {
            Console.WriteLine($"长度:{length}");
            Console.WriteLine($"宽度:{width}");
            Console.WriteLine($"面积:{Getarea()}");
        }
    }




    class Program
    {
        static void Main(string[] args)
        {
            Rectangle rectangle = new Rectangle();
            rectangle.width = 55.5;
            rectangle.length = 12.32;
            rectangle.Getarea();
            rectangle.Display();
            Console.ReadKey(true);
        }
    }
}

 

当上边的代码被编写翻译和执行时,它会生出下列结果:

长度:12.32
宽度: 55.5 
面积: 683.76

在上头的实例中,成员变量 length 和 width
被声称为 public,所以它们得以被函数 Main() 使用 Rectangle
类的实例  rectangle 访问。

分子函数 Display() 和 GetArea() 能够直接待上访谈这个变量。

分子函数 Display() 也被声称为 public,所以它也能被 Main() 使用
Rectangle 类的实例 rectangle 访问。

Private(私有的) 访问修饰符

Private
访谈修饰符允许二个类将其成员变量和分子函数对此外的函数和指标开展掩没。唯有同八个类中的函数能够访谈它的私家成员。固然是类的实例也无法访谈它的私有成员。

using System;

namespace ConsoleApp1
{
    class Rectangle
    {
        private double length { get; set; }
        private double width { get; set; }

        public void Acceptdetails()
        {
            Console.WriteLine("请输入长度:");
            length = Convert.ToDouble(Console.ReadLine());
            Console.WriteLine("请输入宽度:");
            width = Convert.ToDouble(Console.ReadLine());
        }

        public double Getarea()
        {
            return length * width;
        }

        public void Display()
        {
            Console.WriteLine($"长度:{length}");
            Console.WriteLine($"宽度:{width}");
            Console.WriteLine($"面积:{Getarea()}");
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            Rectangle rectangle = new Rectangle();
            rectangle.Getarea();
            rectangle.Display();
            Console.ReadKey(true);
        }
    }
}

在上边的实例中,成员变量 length 和 width
被声称为 private,所以它们无法被函数 Main() 访问。

分子函数 AcceptDetails() 和 Display() 可以访谈这个变量。

鉴于成员函数 AcceptDetails() 和 Display() 被声称为 public,所以它们可以被 Main() 使用
Rectangle 类的实例 rectangle 访问。

那黄金年代段讲的是private 实际不是public
所以请认真看那四个访问修饰符,小编第壹遍看的时候也看错了。所以请认真对待!

Protected 访问修饰符

Protected
访谈修饰符允许子类访问它的基类的积极分子变量和成员函数。那样有支持落成持续。
放到持续的章节详细争辩这么些。 

Internal 访谈修饰符

Internal
访谈表达符允许叁个类将其成员变量和分子函数暴露给当下程序中的其余函数和指标。

换句话说,带有 internal
采访修饰符的 其他成员 能够被定义在该成员所定义的应用程序内的其他类或艺术访谈。 

using System;

namespace RectangleDemo 
{
    class Rectangle
    {
        //成员变量
        internal double length;
        internal double width;

        double GetArea()
        {
            return length * width;
        }
       public void Display()
        {
            Console.WriteLine("长度: {0}", length);
            Console.WriteLine("宽度: {0}", width);
            Console.WriteLine("面积: {0}", GetArea());
        }
    }   
    class ExecuteRectangle
    {
        static void Main(string[] args)
        {
            Rectangle r = new Rectangle();
            r.length = 4.5;
            r.width = 3.5;
            r.Display();
            Console.ReadLine();
        }
    }
}

当下面的代码被编写翻译和施行时,它会发生下列结果:

长度: 4.5
宽度: 3.5
面积: 15.75

在上头的实例中,请留神成员函数 GetArea() 注脚的时候不分包其它访问修饰符。若无一些名访谈修饰符,则接纳类成员的暗许访问修饰符,即为 private

Protected Internal 访问修饰符

Protected Internal
访谈修饰符允许在本类,派生类只怕隐含该类的程序集中拜候。那也被用来落实三番五次。 
 

admin

网站地图xml地图