一.成員訪問和屬性
在定義類的時候我們要考慮成員的訪問權限,在這裡詳細說明private加深大家對private的理解;如果類的成員是private那麼在其他類中調用該類對象來訪問它是非法的。下面舉例說明:
class Per
{
private string name;
public string address;
public int age;
public Per()
{
name = "Upagn";
address = "changsha";
}
}
在Main()函數中的代碼如上圖所示,
在編譯過程中會出現錯誤:
錯誤“ceshi.Per.name”不可訪問,因為它受保護級別限制
有關屬性set和get,set and get,它們的用途: 一般是對類裡面的變量進行操作. 而不是直接對類的變量進行操作.有一個很大的作用就是: 便於維護.看下面的程序
在實際程序中的變量調用get和set:
Per percy = new Per();
Console.WriteLine(percy.address);
Console.WriteLine(percy.name);
percy.age = 22; //調用set對age賦值
Console.WriteLine(percy.age);
//調用get獲取當前對象age的值
二.有關抽象類和抽象方法的實現
抽象類中只定義了一些成員和抽象的方法,當中成員不一定是抽象的,但是方法必須是抽象的,而且要在子類中覆蓋來現實一定的功能;抽象類是不能實例化的。抽象方法也是,只定義了一個方法體,沒有具體實現的代碼,要在子類中覆蓋,下表中左邊是個抽象類和它的抽象方法,右邊的類繼承了它並實現了抽象方法
public abstract class Myab
{
public abstract void Hi(string Name);
//抽象方法不可有主體。
}
public class SubMyab : Myab
{ public override void Hi(string Name)
{
Console.WriteLine(Name + "override void Hi(string Name"); }
}
類可以這樣來初時化並使用: SubMyab obj = new SubMyab();obj.Hi(obj.city); 接口與抽象類的區別是接口中所有的成員都是抽象的,不能包含構造函數,析構函數和靜態成員與常量。一個接口可以被多個類繼承,一個類可以繼承多個接口,並實現接口中的方法,下面定義一個接口,來求三個不同形狀的面積:
public interface Ishape
{
double GetArea();//抽象方法只能寫成這個樣子
}//三個類的實例對象求面積
Retange Myre = new Retange(2, 8); Console.WriteLine(Myre.GetArea());
Triangle MyTri = new Triangle(5, 1, 9);
Console.WriteLine(MyTri.GetArea());
Circle MyCur = new Circle(10);
Console.WriteLine(MyCur.GetArea());
public class Circle : Ishape
{
public double radius;
public Circle(double radius)
{
this.radius = radius; //構造函數
}
public double GetArea()
{
return (Math.PI) * this.radius * this.radius;
}
}
public class Retange : Ishape
{
public double witdh;
public double height;
public Retange(double width, double height)
{
this.witdh = width;
this.height = height;//構造函數
}
public double GetArea()
{
return this.height * this.witdh;
}
}
輸出結果是:
public class Triangle : Ishape
{
public double Arc1;
public double Arc2;
public double Arc3;
public Triangle(double Arc1,double Arc2,double Arc3)
{
this.Arc1 = Arc1;
this.Arc2 = Arc2;
this.Arc3 = Arc3; //構造函數
}
public double GetArea()
{
return this.Arc1 * this.Arc2 * this.Arc3;
}
}
上面的代碼請大家認真分析並自己敲入電腦中實現,不要直接拷貝。下一節將講述C#字符串處理。