09、封装与类成员
一、为什么要封装
不必知道类中所有的细节,只需要把需要使用的开放出来。
二、如何封装
Public--允许任何人来访问
Internal--只要在同一个项目中即可访问
Protected--继承时子类可以对基类的完全访问
Protected Internal--它只可以被本组合体内所有的类和这些类的继承子类所存取
Private--只允许同一个类中的成员进行访问
例子:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace _11 { public class Product { int money5; public int money; private int money1; internal int noney2; protected int money3; internal protected int money4; public int sold(int num) { money -= num; return money; } } }
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace _11 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { int number = int.Parse(tb_num.Text); Product p = new Product(); p.money = 1000; int result = p.sold(number); label1.Text = result.ToString(); } } }
三、类成员
1、 数据成员
字段
实例成员字段
静态字段
只读字段
常量字段
项目 | 只读字段 | 常量字段 |
申明关键字 | readonly | const |
初始化 | 可以在初始化,构造函数和程序运行时初始化。 | 只能在申明的时候初始化。 |
实例或静态 | 可以是静态的,默认不是静态的。 | 只是隐式静态 |
数据类型 | 可以是值类型,也可以是引用类型 | 只能是同建的值类型或枚举类型 |
常量
事件
2、函数成员
方法
属性
构造函数和析构函数
运算符
索引器