C 成員訪問和抽象類與介面

2021-05-27 10:14:09 字數 2302 閱讀 8053

一.成員訪問和屬性

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

類可以這樣來初時化並使用: submyab obj = new submyab();obj.hi(obj.city); 介面與抽象類的區別是介面中所有的成員都是抽象的,不能包含建構函式,析構函式和靜態成員與常量。乙個介面可以被多個類繼承,乙個類可以繼承多個介面,並實現介面中的方法,下面定義乙個介面,來求三個不同形狀的面積:

public inte***ce ishape

double getarea();//抽象方法只能寫成這個樣子

}//三個類的例項物件求面積

retange myre = new retange(2, 8);  console.writeline(myre.getarea());

******** mytri = new ********(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;

輸出結果是:

315.159265358979

public class ******** : ishape

public double arc1;

public double arc2;

public double arc3;

public ********(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.抽象方法必須包含在抽象類裡面,也就是乙個類中有抽象方法,那這個類一定是抽象類。3.繼承抽象類,必須顯示的實現override其抽象成員 方法 4.抽象類可以包含普通成員,但是抽象成員只能放到抽象類裡。5.抽象類不能直接例項話,宣告的物件只能使...

C 抽象類和介面

net 提供了介面,這個不同於 class 或者struct 的型別定義。介面有些情況,看似和抽象類一樣,因此有些人認為在 net 可以完全用介面來替換抽象類。其實不然,介面和抽象類各有長處和缺陷,因此往往在應用當中,兩者要結合來使用,從而互補長短。接下來先說說抽象類和介面的區別。區別一,兩者表達的...

C 抽象類和介面

物件導向的程式設計,並不是類越多越好,類的劃分是為了封裝,但分類的基礎是抽象,具有相同屬性和功能的物件的抽象集合才是類。在類的基礎上進行抽象,那麼便是抽象類。比如黑貓,白貓,小貓,大貓,它們的共同特點就是屬於貓,那麼貓就是乙個類,同樣狗也是乙個類。在貓狗的基礎上,因為它們均屬於動物,那麼動物便是它們...