Csharp/CSharp Tutorial/Class/public

Материал из .Net Framework эксперт
Версия от 12:16, 26 мая 2010; Admin (обсуждение | вклад) (1 версия)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Public vs private access

It is OK for a member of a class to access a private member of the same class.


using System; 
 
class MyClass {  
  private int a; // private access explicitly specified 
  int b;          // private access by default 
  public int gamma;  // public access 
   
  public void setAlpha(int val) { 
    a = val;  
  } 
 
  public int getAlpha() { 
    return a; 
  } 
 
  public void setBeta(int a) { 
    b = a;  
  } 
 
  public int getBeta() { 
    return b; 
  } 
}  
  
class AccessDemo {  
  public static void Main() {  
    MyClass ob = new MyClass();  
  
    /* Access to a and b is allowed only through methods. */ 
    ob.setAlpha(-99); 
    ob.setBeta(19); 
    Console.WriteLine("ob.a is " + ob.getAlpha()); 
    Console.WriteLine("ob.b is " + ob.getBeta()); 
 
    // You cannot access a or b like this: 
//  ob.a = 10; // Wrong! a is private! 
//  ob.b = 9;   // Wrong! b is private! 
 
    // It is OK to directly access gamma because it is public. 
    ob.gamma = 99;  
   }  
}
ob.a is -99
ob.b is 19

Re-using Base Class Identifiers

class Point2D
{
    public int X;
    public int Y;
}
   
class Point3D : Point2D
{
    public int X;
    public int Y;
    public int Z;
}
   
class MyMainClass
{
    public static void Main()
    {
        Point2D My2DPoint = new Point2D();
        Point3D My3DPoint = new Point3D();
   
        My2DPoint.X = 100;
        My2DPoint.Y = 200;
   
        My3DPoint.X = 150;
        My3DPoint.Y = 250;
        My3DPoint.Z = 350;
    }
}

Use an access modifier with an accessor

using System;  
  
class MySequence {   
  int prop;   
  
  public MySequence() { prop = 0; }  
  
  public int MyProp {  
    get {  
      return prop;  
    }  
    private set { // private  
      prop = value;  
    }   
  }  
 
  public void increaseSequence() { 
    MyProp++; 
  } 
}   
 
class MainClass {   
  public static void Main() {   
    MySequence ob = new MySequence();  
  
    Console.WriteLine("Original value of ob.MyProp: " + ob.MyProp);  
  
    ob.increaseSequence(); 
    Console.WriteLine("Value of ob.MyProp after increment: " 
                      + ob.MyProp);  
  }  
}
Original value of ob.MyProp: 0
Value of ob.MyProp after increment: 1