Joh*_*ers 19
那些不是课程.
private,protected并且public是访问修饰符.它们指示哪些其他代码可以看到它们影响的代码:
public class Foo
{
private int _myOwn = 1;
protected int _mineAndChildren = 2;
public int _everyOnes = 3;
}
public class Bar : Foo
{
public void Method()
{
_myOwn = 2; // Illegal - can't access private member
_mineAndChildren = 3; // Works
_everyOnes = 4; // Works
}
}
public class Unrelated
{
public void Method()
{
Foo instance = new Foo();
instance._myOwn = 2; // Illegal - can't access private member
instance._mineAndChildren = 3; // Illegal
instance._everyOnes = 4; // Works
}
}
Run Code Online (Sandbox Code Playgroud)
一abstract类是一个可能包含abstract成员.一个abstract成员没有实施,使所有派生类必须实现的abstract成员.
一个sealed类不能被继承.一个static类是sealed,但也只能包含static成员.
我建议你从" Visual C#入门"开始.这是一个非常基本的问题.
public,private而protected不是类,它们是访问修饰符.它们改变了允许访问用它们装饰的类的内容.它们适用于类以及类的成员.
public 物品可以在任何地方看到private 只能在同一个文件中看到类private 只能在该类中看到类的成员protected成员在类及其后代中可见internal 类在同一程序集中是公共的.所述abstract关键字标志着一个类或方法为具有没有实现,并且它必须被覆盖(用override在派生类型关键字),然后才能使用它.
一个sealed类不能继承.
static在类成员上使用关键字表示该成员属于该类本身,而不是它的特定实例.将类标记为static强加了此类的所有成员也必须具有的限制static.
private,public并protected指出谁可以访问类的成员.私人意味着班上没有人能看到它.公众意味着每个人都可以看到它 protected就像私有一样,但是子类可以访问它.
class Data
{
private int counter; // only accessible to class functions
protected int id; // accessible to class and subclass functions
public string name; // accessible from all code
}
Run Code Online (Sandbox Code Playgroud)
abstract意味着这不是一个完成的类 - 它意味着用作子类的基础.通常在其定义中存在虚函数,函数旨在由子类"填充".
abstract class Window
{
// cannot create objects of this class directly
// need to create sub class
}
Run Code Online (Sandbox Code Playgroud)
static在类定义上意味着只有一个全局副本.它几乎将类恢复为旧式模块.static对某个成员表示它是该类中的全局成员,对于您为该类创建的每个对象都没有不同的版本.
static class Configuration
{
// only one instance of the object
}
class Data
{
private static int counter; // all Data objects access this one counter
private int id; // each Data object has a different id
}
Run Code Online (Sandbox Code Playgroud)
sealed防止创建子类; 它也可以应用于单个函数,以防止它们在子类中被覆盖.
sealed class TelephoneNumber
{
// cannot create subclass of TelephoneNumber
}
class Address
{
public sealed string FormatAddress()
{
// this function cannot be overridden on a subclass
}
}
Run Code Online (Sandbox Code Playgroud)