zoukankan      html  css  js  c++  java
  • 什么是封装?

    1.封装概念

    封装:每个对象都包含有它能进行操作的所有信息,这个特性称为封装。这样的方法包含在类中,通过类的实例来实现。(例如下面猫的主人属性)

    2.封装的优点

    1》.封装还避免了命名冲突的问题,封装有隔离作用,不同的类中可以有相同名称的方法和属性,但不会混淆,也可以减少耦合(比如实现界面和逻辑分离)

    2》.可以让类对外接口不变,内部可以实现自由的修改

    3》.从安全性考虑,封装使对代码的修改更加安全和容易,封装明确的指出了哪些属性和方法是外部可以访问的

    4》.因为封装的类功能相对独立,因此能更好的实现代码复用

    5》.从设计角度来讲,封装可以对外屏蔽一些重要的信息。注意:这里的代码保护不是指代码本身的加密,而是对不想外部更改的代码通过私有实现。

    二,代码实现:

    1》封装类

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace FengZhuang
    {
        public class Cat
        {
            string _catName;
            string _catColor;
            readonly string _owner = "张三";
            int _sNumber;
    
            /// <summary>
            /// 构造函数
            /// </summary>
            /// <param name="catName"></param>
            public Cat(string catName, string catColor)
            {
                CatName = catName;
                CatColor = catColor;
            }
    
            /// <summary>
            /// 狗名字
            /// </summary>
            public string CatName
            {
                get { return _catName; }
                set { _catName = value; }
            }
            /// <summary>
            /// 狗的颜色 
            /// </summary>
            public string CatColor
            {
                get { return _catColor; }
                set { _catColor = value; }
            }
            /// <summary>
            /// 狗的主人 只读 
            /// </summary>
            public string Owner
            {
                get { return _owner; }
            }
    
            /// <summary>
            /// 狗叫的次数
            /// </summary>
            public int ShoutNumber
            {
                set { _sNumber = value; }
                get { return _sNumber; }
            }
    
            /// <summary>
            /// 狗叫的方法
            /// </summary>
            public void Shout()
            {
                int i = 0;
                string ShoutNum = "";
                do
                {
                    ShoutNum += "喵喵喵喵!";
                    i++;
                } while (i <= ShoutNumber);
                Console.WriteLine(Owner + "家一只" + CatColor + "色的猫," + "名字为:" + CatName + "  一直在叫:" + ShoutNum);
            }
        }
    }

    2》,调用实现

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace FengZhuang
    {
        class Program
        {
            static void Main(string[] args)
            {
                Cat c = new Cat("小白", "");
                c.Shout();
            }
        }
    }
  • 相关阅读:
    Codeforces Round #277 (Div. 2)
    Topcoder SRM 637 (Div.2)
    【转】大素数判断和素因子分解【miller-rabin和Pollard_rho算法】
    【网络流#5】UVA 11082 最大流
    【网络流#4】UVA 753 最大流
    Codeforces Round #274 (Div. 2)
    【网络流#3】hdu 1532
    【网络流#2】hdu 1533
    【网络流#1】hdu 3549
    Codeforces Round #273 (Div. 2)
  • 原文地址:https://www.cnblogs.com/May-day/p/6398370.html
Copyright © 2011-2022 走看看