(十四)C#编程基础复习——封装

特此声明:本教程内容可能有部分参照其他博主的观点或描述,但始终不影响我学习的热情,代码全部自己手工敲打,编辑此教程目的不是为了博取大家眼球,也不是为利益所驱,只是纯属为了方便自己学习,编辑的过程中也让自己加深了对C#各个基础的印象,同时也让自己编码过程更加流畅顺利,最后还能帮助到有需要的人,代码都是自己亲测有效,如有侵权可以联系本人删除。

C#是一门面向对象编程语言,面相对象编程语言有三大特性,分别是封装、继承和多态。所谓封装就是将一个或多个项目(函数)集合在一个单元中,这个单元称之为类,我们可以根据需要通过权限修饰符来设定类中成员的范围和可见性。C#中的访问权限修饰符有以下几种:

  1. public:公共的,所有对象都可以访问,但是需要引用命名空间;
  2. private:私有的,类的内部才可以访问;
  3. internal:内部的,同一个程序集的对象可以访问,程序集就是命名空间;
  4. protected:受保护的,类的内部或类的父类和子类中可以访问;
  5. protected internal:protected和internal的并集,符合任意一条都可以访问;

一、public

类中使用public访问权限修饰符修饰的成员变量或成员函数可以在其他函数和对象,我们可以从类的外部访问类中的公共成员(使用public修饰的类成员)。

示例代码如下:

namespace Day4
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Rectangle obj = new Rectangle();
            obj.width = 5.5;
            obj.length = 3;
            obj.Display();
            Console.ReadLine();
        }
    }
    class Rectangle
    {
        //成员变量
        public double width, length;
        public double GetArea()
        {
            return width * length;
        }
        public void Display()
        {
            Console.WriteLine("长方形的长:{0}",length);
            Console.WriteLine("长方形的宽:{0}",width);
            Console.WriteLine("长方形的面积为:{0}", GetArea());
        }
    }
}

运行结果:

二、private

类中使用private访问权限修饰符修饰的成员变量或成员函数不能再其他函数或对象访问,即使是类的实例也不能访问这个类中的私有成员,只有同属一个类的函数才可以访问这个类的私有成员。

namespace Day4
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Rectangle obj = new Rectangle();
            //obj.width = 5.5;无法访问private修饰符中的成员变量
            //obj.length = 3;无法访问private修饰符中的成员变量
            obj.AcceptDetails();
            obj.Display();
            Console.ReadLine();
        }
    }
    class Rectangle
    {
        //成员变量
        private double width, length;//只能在当前类中使用
        public void AcceptDetails()
        {
            Console.WriteLine("请输入长方形的长度:");
            length = Convert.ToDouble(Console.ReadLine());
            Console.WriteLine("请输入长方形的宽度:");
            width = Convert.ToDouble(Console.ReadLine());

        }
        public double GetArea()
        {
            return width * length;
        }
        public void Display()
        {
            Console.WriteLine("长方形的长:{0}",length);
            Console.WriteLine("长方形的宽:{0}",width);
            Console.WriteLine("长方形的面积为:{0}", GetArea());
        }
    }
}

运行结果:

上面的示例中,成员变量length和width使用private修饰,因此无法通过Demo类中的Main函数访问,只能通过Rectangle类中的成员函数AcceptDetails()和Display()来访问这些变量。又因为Rectangle中的成员函数AcceptDetails()和Display()是使用public修饰的,因此可以使用Rectangle类的实例Obj来调用它们。

三、protected

类中使用protected访问权限修饰符修饰的成员变量和成员函数可以在其子类中访问,也就是说基类(父类)中使用protected访问权限修饰符修饰的成员变量和成员函数可以在其子类中访问,这样有助于实现继承。

四、internal

类中使用internal访问权限修饰符修饰的成员变量和成员函数可以在当前程序集中的其他函数或对象中使用。换句话说就是,任何使用internal修饰的成员都可以被同一命名空间下的任何类或方法访问

示例代码如下:

namespace Day4
{
    internal class Program
    {
        static void Main(string[] args)
        {
 
            Rectangle obj = new Rectangle();
            obj.length = 33.3;
            obj.width = 22.3;
            obj.Display();
            Console.ReadLine();
        }
    }
    class Rectangle
    {
        //成员变量
        internal double width, length;//只能在当前命名空间下使用
        public double GetArea()
        {
            return width * length;
        }
        public void Display()
        {
            Console.WriteLine("长方形的长:{0}",length);
            Console.WriteLine("长方形的宽:{0}",width);
            Console.WriteLine("长方形的面积为:{0}", GetArea());
        }
    }
}

运行结果:

上面示例中,没有使用任何访问权限修饰符修饰的成员函数GetArea()默认是是有的。

五、protected internal

类中使用此访问权限修饰符修饰的成员可以在本类、派生类或者包含该类(使用using 引入)的程序集中访问,在实现继承时也使用此方法。

posted @   代号六零一  阅读(31)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示