zoukankan      html  css  js  c++  java
  • 天轰穿C# vs2010 04面向对象的编程之访问修饰符【原创】

    一点都不麻烦,它只是通过访问修饰符来控制的,我们昨天的例题中就用到过,public 就是一个,不过它的作用就是将成员完全公开出来。接下来我们看下全部访问修饰符。

    Public——允许任何人来访问。

    Internal——只要在同一个项目(不是解决方案)中均可访问。

    protected——继承时子类可以对基类有完全访问权。

    protected internal ——唯一的一种组合限制修饰符,它只可以被本组合体内所有的类和这些类的继承子类所存取。

    private——只允许同一个类中的成员访问。


    例:做一个商品出售的Demo 界面如图4-14
     

                                    4-14

    创建一个Products的类,在Products.cs中添加如下的代码:

    public class Products

        {

            public int number;          //对外公开,无保护

            // private int number;      // 访问权限为私有,只有本类内部可以访问

            // protected int number;    //继承保护,只有本类自身和其子类可以访问,外部不访问

            // internal int number;     // 只要在同一个项目(不是解决方案)中均可访问

            // int number;              // 不行,因为在默认的情况下是pravite限制符

            public bool sold(int amt) // 方法的访问修饰符同样效果,可以尝试换着用用
            {
                number -= amt;
                return true;
            }
        }

    From1窗体上鼠标右键-查看代码,在From1的构造函数(后面具体讨论构造函数)中初始化,代码如下

    public partial class Form1 : Form

        {

            Products p;         //这里申明一个私有的Products类型变量,没有访问修饰符默认为私有

            public Form1()

            {

                InitializeComponent();

                p= new Products();

                p.number = 1000;  //尝试将Products中几个字段的访问修饰符换下,看看这里的效果

                label2.Text = p.number.ToString();

            }
        }

    双击From1窗体上【出售】按钮,在事件中添加如下代码:

    private void button1_Click(object sender, EventArgs e)

            {

                //尝试将Products中几个字段的访问修饰符换下,看看这里访问方法的效果

                p.sold(Convert.ToInt32(tb_num.Text));

                label2.Text = p.number.ToString();

            }

        

           小天:也就是说如果将字段、常量、方法等用private修饰后,那么这些对象就只有在当前类的内部可以访问对吧?可是什么情况下用private,什么情况下用public呢,还有其他几个访问修饰符呢?

    本文章为天轰穿原创文章,转载请注明出处及作者。 

  • 相关阅读:
    并发编程(贰):线程池浅析
    并发编程(壹):创建线程的三种方式及其对比
    Spring Boot使用@Async实现异步调用:自定义线程池
    parallel stream-不能随便使用
    Java 8新特性(四):新的时间和日期API
    Java 8新特性(三):Optional类
    Java 8新特性(二):Stream API
    Java 8新特性(一):Lambda表达式
    ES日期存储
    String,StringBuffer,StringBuillder的底层结构
  • 原文地址:https://www.cnblogs.com/thcjp/p/2832218.html
Copyright © 2011-2022 走看看