A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郝滨 中级黑马   /  2013-3-7 19:59  /  1774 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

第一种情况,子类的可访问级别比父类的高
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;
    }
}

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

1 个回复

倒序浏览
学习下,慢慢理解下
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马