学习内容:C#;学习书籍:图解教程(中文第四版)。
目录:第四章 类的基本概念 -----> 4.8 访问修饰符
访问修饰符
从类的内部,任何函数成员都可以使用成员的名称访问类中任意的其他成员。
访问修饰符是成员声明的可以选部分,指明程序的其他部分如何访问成员
字段和方法声明的语法:
字段
访问修饰符 类型 标识符;
方法
访问修饰符 返回类型 方法名()
{
...
}
有5种成员访问控制:private 私有的;public 公有的;protected 受保护的;internal 内部的;protected internal 受保护内部的。
(这里介绍了前两种,剩下的在第7章)
1. 私有访问
私有成员只能从声明它的类的内部访问,其他的类不能看见或访问它们。
* 私有访问是默认的级别访问。也就是说,如果一个成员在声明时不带访问修饰符,则该成员就是私有成员。
使用 private访问修饰符对一个成员进行修饰,则将该成员声明为私有的。
2. 公有访问
实例的公有成员可以被程序的其他对象访问。
必须使用 public 访问修饰符指定公有访问。
声明一个Students类,包含两个私有成员(一个隐式声明、一个显示声明),一个公有成员;一个私有方法,一个公有方法。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _2018_05_28_PM_1412_访问修饰符 { public class Students { int SNo; //该成员在声明时没有带访问修饰符,默认为私有的成员,隐式声明 public string SName; //该成员在声明时由 public 访问修饰符进行修饰,该成员为公有成员 private string SPassword; //该成员由 private 访问修饰符修饰,为私有成员,显式声明 bool IsOdd() //返回值为 bool 类型,无参数,方法名为 IsOdd 的 私有方法 { Random random = new Random(); //取随机数的种子 int num = random.Next(1, 101); //在1到101之间随机取一个数字 int remainder = num % 2; //%为求余,得到随机数字除于2的余数 if (remainder == 0)//如果余数的值等于0,则证明该数字被2整除,为偶数 { return false; //返回值为 false } else { return true; }//如果余数的值不等于0,则证明该数字不能被2整除,为奇数 ,返回值为true } public void Demo()//返回值为空,无参数,方法名为 Demo 的公有方法,由Public访问修饰符进行指定 { SNo = SNo + 1; //在类的内部 可以 访问到私有成员
} } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _2018_05_28_PM_1412_访问修饰符 { class Program { static void Main(string[] args) { Students stu = new Students();//创建 Students类型的对象 stu.SName = "Test";//可以访问 公有成员 stu.Demo();//可以访问 公有方法 } } }
见下图,可以看到:创建的Students类型的对象 stu从外部访问Students类时,只有公共的成员和方法能访问到,而私有的成员和方法是无法访问的。
学习感受:
记录这个的主要原因是看到:私有访问是默认的级别访问。也就是说,如果一个成员在声明时不带访问修饰符,则该成员就是私有成员。 这句话,因为之前有学过Java,在Java中没有访问修饰符的成员,并不是默认为私有的,而也是一种访问修饰符,其范围是:包访问权限,即在整个包内均可被访问。