类的访问修饰符

数据隐藏是面向对象编程,允许防止程序的功能直接访问类类型的内部表现的重要特征之一。将访问限制的类成员是由类体内标记public, private, protected。关键字public, private, protected被称为访问访问修饰符。

一个类可以有多个public, protected, private标记的部分。每个部分仍然有效,直至另一部分标签或类主体的结束右大括号。成员和类的缺省访问是私有的。

class Base {
 
   public:
 
  // public members go here
 
   protected:
 
  // protected members go here
 
   private:
 
  // private members go here
 
};

公共成员:

公共成员是从类以外的任何地方,但在程序中访问。可以设置和获取公共变量的值,下面的示例中所示的任何成员函数:

import std.stdio;

class Line
{
   public:
     double length;
     double getLength()
     {
        return length ;
     }

     void setLength( double len )
     {
        length = len;
     }
}

void main( )
{
   Line line = new Line();

   // set line length
   line.setLength(6.0);
   writeln("Length of line : ", line.getLength());

   // set line length without member function
   line.length = 10.0; // OK: because length is public
   writeln("Length of line : ",line.length);

}
当上面的代码被编译并执行,它会产生以下结果:
Length of line : 6
Length of line : 10

私有成员:

一个私有成员变量或函数不能被访问,甚至从类外面看。只有类和友元函数可以访问私有成员。

默认情况下,一个类的所有成员将是私有的,例如,在下面的类宽度是一个私有成员,这意味着直到标记一个成员,它会假设一个私有成员:

class Box
{
   double width;
   public:
      double length;
      void setWidth( double wid );
      double getWidth( void );
}
实际上,我们定义在公共部分私人部分和相关的功能的数据,以便它们可以从类的外部调用中所示的下列程序。
import std.stdio;

class Box
{
   public:
     double length;
          
     // Member functions definitions
     double getWidth()
     {
         return width ;
     }

      void setWidth( double wid )
      {
         width = wid;
      }

   private:
      double width;
}

// Main function for the program
void main( )
{
   Box box = new Box();

   box.length = 10.0; /
   writeln("Length of box : ", box.length);

   box.setWidth(10.0); 
   writeln("Width of box : ", box.getWidth());
}
当上面的代码被编译并执行,它会产生以下结果:
Length of box : 10
Width of box : 10

受保护的成员:

protected成员变量或函数是非常相似的一个私有成员,但条件是他们能在被称为派生类的子类来访问一个额外的好处。

将学习派生类和继承的下一个篇章。现在可以检查下面的示例中,这里已经从父类派生Box一个子类smallBox。

下面的例子是类似于上面的例子,在这里宽度部件将是可访问由它的派生类在smallBox的任何成员函数。

import std.stdio;

class Box
{
   protected:
      double width;
}

class SmallBox:Box // SmallBox is the derived class.
{
   public:
      double getSmallWidth()
      {
         return width ;
      }

      void setSmallWidth( double wid )
      {
         width = wid;
      }
}

void main( )
{
   SmallBox box = new SmallBox();

   // set box width using member function
   box.setSmallWidth(5.0);
   writeln("Width of box : ", box.getSmallWidth());
}
当上面的代码被编译并执行,它会产生以下结果:
Width of box : 5
联系我们

邮箱 626512443@qq.com
电话 18611320371(微信)
QQ群 235681453

Copyright © 2015-2022

备案号:京ICP备15003423号-3