继承中访问修饰符的区别
一、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; //错误,不允许访问类的其他保护成员
}
}