第一种情况,子类的可访问级别比父类的高
class Person
{
}
public class Student : Person
{
}
/第二种情况,类的访问修饰符和类方法的访问修饰符都高于【参数】的访问修饰符
class Person
{
}
public class Test
{
public void Show(Person p)
{
Console.WriteLine(p.ToString());
}
}
第三种情况,类的访问修饰符和类属性或字段的访问修饰符都高于【参数】的访问修饰符 class Person
{
}
public class Test
{
public Person p;
public void Show()
{
Console.WriteLine(p.ToString());
}
}
/第四种情况,类的访问修饰符和类方法的访问修饰符都高于【参数】的访问修饰符
class Person
{
}
public class Test
{
public Person Show()
{
return null;
}
}=================================================================
访问级别约束:子类访问级别不能比父类高(等级观念),因为子类能够出席的场合父类都应该能出席,如果父类可访问级别比子类低就有了父类去不了的场合(儿子能去的地方爹一定要能去)。举例;方法、属性等暴露的返回值、参数的数据类型不能比方法、属性或者所在类的可访问级别低,因为这些方法、属性要能在高级场合出现,如果用到的类型却不能在这个场合出现就明显不合理了。=======================================================================
第一种情况,子类的访问级别不能比父类的高。
不然的话,会暴露父类的成员
改正:让子类的访问修饰符也为internal或者让父类的访问修饰符也为public
private → 低
public → 高
public class Chinese : Person
{
public string HuKou
{
get;
set;
}
}
把这里的public 改成internal就不报错了。
原因是,类本身的活动范围是internal,与Person的一致。Car类中的成员也不可能超出internal的范围。
public class Car
{
<summary>
车的所有者
类的属性(CheZhu)的访问修饰符,不能比属性的类型(Person)的访问修饰符高。
</summary>
public Person CheZhu
{
get;
set;
}
}
参数类型的可访问性比方法本身的低
public class Manager
{
public void RenKouDengJi(Person per)
{
}
}
方法返回值的可访问性比方法本身的低。
public class Manager
{
public Person RenKouDengJi()
{
return null;
}
}
|