C#继承中访问修饰符的区别

继承中访问修饰符的区别

一、public 类内部可以,子类可以,其他类可以。

二、private 类内部可以,子类和其他类都不可以。

三、protected 类内部和子类可以,其他类不可以。

四、internal 类声明为内部的,即只有当前工程中的代码才能访问它。

父类中的成员如果用public修饰,任何类都可以访问;如果用private修饰,它将作为私有成员,只有类本身可以访问,其他任何类都无法访问。在C#中,使用protected修饰符的成员可以被其子类访问,而不允许其他非子类访问。

父类中只有被“public”,“protected”,“internal”修饰的成员才可以被继承。这些成员包括父类的字段、属性、方法和索引器,但是父类的构造函数和析构函数是不能被子类继承的。如果要继承父类构造函数,必须使用base关键字来实现。

class ClassA

{ public int a;

private int b;

protected int c;

public void SetA( )

{ a=1; //正确,允许访问类自身公有成员

b=2; //正确,允许访问类自身私有成员

c=3; //正确,允许访问类自身保护成员

}

}

class ClassB:ClassA

{ public void SetB( )

{

ClassA BaseA=new ClassA( );

BaseA.a=5; //正确,允许访问基类公有成员

BaseA.b=23; //错误,不允许访问基类私有成员

BaseA.c=68; //正确,允许访问基类保护成员

}

}

class ClassC

{ public void SetC( )

{

ClassA BaseA=new ClassA( );

BaseA.a=5; //正确,允许访问类的其他公有成员

BaseA.b=23; //错误,不允许访问类的其他私有成员

BaseA.c=68; //错误,不允许访问类的其他保护成员

}

}