程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> 關於C# >> C#成員訪問和抽象類與接口

C#成員訪問和抽象類與接口

編輯:關於C#

一.成員訪問和屬性

在定義類的時候我們要考慮成員的訪問權限,在這裡詳細說明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#字符串處理。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved