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

时间:2020-12-26 02:55:58

继承中访问修饰符的区别

一、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;       //错误,不允许访问类的其他保护成员
      }
}