首页 > 其他分享 >面向对象开发的封装

面向对象开发的封装

时间:2023-08-18 21:34:30浏览次数:37  
标签:封装 访问 修饰符 面向对象 length 开发 Console width Rectangle

封装

被定义为"把一个或多个项目封闭在一个物理的或者逻辑的包中"。在面向对象程序设计方法论中,封装是为了防止对实现细节的访问。

抽象和封装是面向对象程序设计的相关特性。抽象允许相关信息可视化,封装则使程序员实现所需级别的抽象

封装使用 访问修饰符 来实现。一个 访问修饰符 定义了一个类成员的范围和可见性。C# 支持的访问修饰符如下所示:

Public 访问修饰符

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

下面的实例说明了这点:

using System;

namespace RectangleApplication
{
    class Rectangle
    {
        //成员变量
        public double length;
        public double width;
        public double GetArea()
        {
            return length * width;
        }
        public void Display()
        {
            Console.WriteLine("长度: {0}", length);
            Console.WriteLine("宽度: {0}", width);
            Console.WriteLine("面积: {0}", GetArea());
        }
    }// Rectangle 结束

    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

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

成员函数 Display() 和 GetArea() 可以直接访问这些变量。

成员函数 Display() 也被声明为 public,所以它也能被 Main() 使用 Rectangle 类的实例 r 访问。

Private 访问修饰符

Private 访问修饰符允许一个类将其成员变量和成员函数对其他的函数和对象进行隐藏。只有同一个类中的函数可以访问它的私有成员。即使是类的实例也不能访问它的私有成员。

下面的实例说明了这点:

using System;

namespace RectangleApplication
{
    class Rectangle
    {
        //成员变量
        private double length;
        private double width;

        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("长度: {0}", length);
            Console.WriteLine("宽度: {0}", width);
            Console.WriteLine("面积: {0}", GetArea());
        }
    }//end class Rectangle    
    class ExecuteRectangle
    {
        static void Main(string[] args)
        {
            Rectangle r = new Rectangle();
            r.Acceptdetails();
            r.Display();
            Console.ReadLine();
        }
    }
}

当上面的代码被编译和执行时,它会产生下列结果:

请输入长度:
4.4
请输入宽度:
3.3
长度: 4.4
宽度: 3.3
面积: 14.52

在上面的实例中,成员变量 length 和 width 被声明为 private,所以它们不能被函数 Main() 访问。

成员函数 AcceptDetails() 和 Display() 可以访问这些变量。

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

Protected 访问修饰符

Protected 访问修饰符允许子类访问它的基类的成员变量和成员函数。这样有助于实现继承。我们将在继承的章节详细讨论这个。更详细地讨论这个。

Internal 访问修饰符

Internal 访问说明符允许一个类将其成员变量和成员函数暴露给当前程序中的其他函数和对象。换句话说,带有 internal 访问修饰符的任何成员可以被定义在该成员所定义的应用程序内的任何类或方法访问。

下面的实例说明了这点:

using System;

namespace RectangleApplication
{
    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());
        }
    }//end class Rectangle    
    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 访问修饰符允许一个类将其成员变量和成员函数对同一应用程序内的子类以外的其他的类对象和函数进行隐藏。这也被用于实现继承。

标签:封装,访问,修饰符,面向对象,length,开发,Console,width,Rectangle
From: https://www.cnblogs.com/lllxxxyyy/p/17641663.html

相关文章

  • 20-面向对象编程-多态
    面向对象编程有三大特征:封装、继承和多态 访问修饰符可以控制属性的访问范围public:表示公共访问级别,可以被任何类访问。protected:表示受保护访问级别,可以被类本身、子类和同一包中的类访问。default(缺省):表示默认访问级别,即如果没有使用访问修饰符,默认是此级别,可以被同一包......
  • 面向对象——封装
    什么是封装    面向对象编程是对客观世界的模拟,客观世界里成员变量都是隐藏在对象内部的,外界无法直接操作和修改。封装被认为是一个保护屏障,防止该类的代码和数据被其他类随意访问。要访问该类的数据,必须通过指定的方式。适当的封装可以让代码更容易理解与维护,也加强了代码......
  • 深入理解后端开发中的消息队列与异步处理
    在现代的应用开发中,消息队列和异步处理已成为构建高性能、可伸缩的后端系统的重要工具。本文将深入探讨消息队列的原理、优势,以及如何在后端开发中应用消息队列和异步处理。什么是消息队列?消息队列是一种将消息从一个应用传递到另一个应用的通信方式。它具有以下特点:解耦:消息队列可......
  • 微信开发之一键撤回消息的技术实现
    撤回消息请求URL:http://域名地址/revokeMsg请求方式:POST请求头Headers:Content-Type:application/jsonAuthorization:login接口返回参数:参数名必选类型说明wId是string登录实例标识wcId否string接收方微信id/群idmsgId是long消息msgId(发送类接口返回的msgId)newMsgId是long消息newMsg......
  • Unity___编辑器开发
    在Editor模式中执行组件内部的public字段/方法1.确定绑定的组件创建GUI按钮[CustomEditor(typeof(Camera))]publicclassTestInspector:Editor{///<summary>///Inspector扩展,在对应的组件中添加按钮,可以点击后调用方法///</summary>publicov......
  • 微信开发之一键撤回消息的技术实现
    撤回消息请求URL:http://域名地址/revokeMsg请求方式:POST请求头Headers:Content-Type:application/jsonAuthorization:login接口返回参数:参数名必选类型说明wId是string登录实例标识wcId否string接收方微信id/群idmsgId是long消息msgId(发送类接......
  • 深入理解后端开发中的微服务架构与容器化
    在现代的应用开发中,微服务架构和容器化技术已成为热门的话题。它们可以帮助构建高度可扩展、灵活、可维护的后端系统。本文将深入探讨微服务架构和容器化技术的原理、优势以及如何在后端开发中应用它们。什么是微服务架构?微服务架构是一种将应用拆分成一组小型、自治的服务的设计方......
  • 19-面向对象-方法重写(Override)
    基本介绍重写(Override):是指子类中有一个方法和父类的某个方法的名称、返回类型、参数完全一样,那么我们就说子类的这个方法覆盖了父类的方法即在Java中,子类在重写父类的方法时,必须与父类方法的修饰符、返回值类型、方法名(参数列表)要完全一致publicclassOverride01{pu......
  • 燧光Rhino-X+Unity开发笔记
    一.前言  该文档的目的是记录开发过程中使用的燧光RhinoX眼镜和Unity引擎和所遇到的问题及解决方式。二.相关文档1.PhinoX-Unity开发文档2.官网设备介绍三.开发环境1.Unity2020.3.472.Rhino-For-Unity-2020Plugin四.问题列表1.RhinoX设备基本参数如下:  操作系统为......
  • 如何在视频直播app源码开发中实现开屏广告功能
    APP开屏广告就目前来说是一个很常见的广告形式,我们现在打开各个APP几乎都会有开屏广告的身影,开屏广告也成了吸引用户注意力和实现盈利的主要方式,所以在视频直播app源码开发,开屏广告功能就显得尤为重要。一、视频直播app源码之开屏广告作用:广告、营销推广界面组成:广告、跳过(倒计......