c# 访问修饰符 静态和非静态
public 在哪都可以访问
private 私有的,只有在当前类的内部进行访问
internal 只能在当前程序集中进行访问(程序集=一个.cs的文件)
protected 受保护的,可以在当前类以及该类的子类中访问
修改类的访问修饰符是internal和public,类默认的访问修饰符是internal
在同一个程序集中,pulic和Internal的权限是一样的
在同一个程序集中internal权限高于protected,但是出了这个程序集,protected的权限高于internal
子类的权限不能高于父类
下面这个类写在lym.cs文件
class Person{
public int Age{get;set;}
}
public class Student:Person{
}
如果在另一个程序集中访问Student这个类,我只需要导入命名空间+添加引用,就可以在另一个程序集中访问Student这个类
Student s=new Student();
s.Age(12);------>此时会访问到这个Age
上述这么写有问题,会暴露父类的成员
改法:
将lym.cs文件中的
public class Person{
public int Age{get;set;}
}
public class Student:Person{
}
静态和非静态
静态成员和静态类被static修饰
实例成员和普通类不被static修饰
为什么说静态类中不能有实例成员????
因为静态成员优于实例成员被加载到内存中,只有创建了对象,才会让内存加载实例成员,
静态类不能创建对象,所以静态类中只有静态成员,无实例成员
调用:静态成员调用: 类名.静态成员名
实例成员调用: 对象名.实例成员名
那普通类中既可以存在静态成员,又存在实例成员
实例成员中既可以调用静态字段和普通字段
静态成员中只能调用静态字段,不能调用普通字段(静态优先被加载到内存,此时还没创建对象,那普通字段就没被加载到内容,所以访问不了)
在实例成员函数中,可以访问静态字段和普通字段
在静态成员函数中,只可以访问静态字段
什么时候使用静态?
—>可以作为工具类(调用静态类里面的方法,直接类名.方法名就可以。普通类访问类里面的方法, 还要创建对象)
—>在整个项目中资源共享,正因为它是资源共享的,所以静态成员必须要等到项目结束时才能将其释放,
所以项目中我们应该少使用静态成员