public 訪問修飾符允許乙個類將其成員變數和成員函式暴露給其他的函式和物件。任何公有成員可以被外部的類訪問。
private 訪問修飾符允許乙個類將其成員變數和成員函式對其他的函式和物件進行隱藏。只有同乙個類中的函式可以訪問它的私有成員。即使是類的例項也不能訪問它的私有成員。
protected 訪問修飾符允許子類訪問它的基類的成員變數和成員函式。這樣有助於實現繼承。
internal 訪問說明符允許乙個類將其成員變數和成員函式暴露給當前程式中的其他函式和物件。換句話說,帶有 internal 訪問修飾符的任何成員可以被定義在該成員所定義的應用程式內的任何類或方法訪問。
using system;
public void display()
", length);
console.writeline("寬度: ", width);
console.writeline("面積: ", getarea()); }
}//end class rectangle
class executerectangle
} }
類的建構函式是類的乙個特殊的成員函式,當建立類的新物件時執行。
建構函式的名稱與類的名稱完全相同,它沒有任何返回型別。
預設的建構函式
沒有任何引數。但是如果您需要乙個帶有引數的建構函式可以有引數,這種建構函式叫做
引數化建構函式
。這種技術可以幫助您在建立物件的同時給物件賦初始值
class line
}
class line
", len);
length = len;
}}
類的析構函式是類的乙個特殊的成員函式,當類的物件超出範圍時執行。
析構函式的名稱是在類的名稱前加上乙個波浪形(~)作為字首,它不返回值,也不帶任何引數。
析構函式用於在結束程式(比如關閉檔案、釋放記憶體等)之前釋放資源。析構函式不能繼承或過載。
我們可以使用static關鍵字把類成員定義為靜態的。當我們宣告乙個類成員為靜態時,意味著無論有多少個類的物件被建立,只會有乙個該靜態成員的副本。
關鍵字static意味著類中只有乙個該成員的例項。靜態變數用於定義常量,因為它們的值可以通過直接呼叫類而不需要建立類的例項來獲取。靜態變數可在成員函式或類的定義外部進行初始化。
using system;
public int getnum()
}class statictester
", s1.getnum());
console.writeline("s2 的變數 num: ", s2.getnum());
console.readkey();}}
}s1 的變數 num: 6
s2 的變數 num: 6
您也可以把乙個成員函式宣告為 static。這樣的函式只能訪問靜態變數。靜態函式在物件被建立之前就已經存在。
基類的初始化
class rectangle
public double getarea()
public void display()
", length);
console.writeline("寬度: ", width);
console.writeline("面積: ", getarea());
}}//end class rectangle
class tabletop : rectangle
public double getcost()
public void display()
", getcost());}}
class executerectangle}}
c# 多重繼承
c# 不支援多重繼承,
可以使用介面來實現多重繼承
using
system
;namespace
public
void
setheight
(inth)
protected
intwidth
;protected
intheight;}
// 基類 paintcost
public
inte***ce
paintcost
// 派生類
class
rectangle
:shape
,paintcost
public
intgetcost
(int
area)}
class
rectangletester",
rect
.getarea
());
console
.writeline
("油漆總成本: $"
,rect
.getcost
(area
));console
.readkey
();}
}
}
介面定義了屬性、方法和事件,這些都是介面的成員。介面只包含了成員的宣告。成員的定義是派生類的責任。介面提供了派生類應遵循的標準結構。
抽象類在某種程度上與介面類似,但是,它們大多只是用在當只有少數方法由基類宣告由派生類實現時。
宣告介面
介面使用inte***ce關鍵字宣告,它與類的宣告類似。介面宣告預設是 public 的。
publicinte***ce
itransactions
using
system
.collections
.generic
;
using
system
.linq
;
using
system
.text
;
using
system
;
namespace
public
class
transaction
:itransactions
public
transaction
(stringc,
stringd,
doublea)
public
double
getamount
()public
void
showtransaction()"
,tcode
);console
.writeline
("date: "
,date
);console
.writeline
("amount: "
,getamount
());}}
class
tester}}
動態多型性
abstract
建立抽象類,用於提供介面的部分類的實現。當乙個派生類繼承自該抽象類時,實現即完成。
抽象類包含抽象方法,抽象方法可被派生類實現。派生類具有更專業的功能
using
system
;
namespace
class
rectangle
:shape
public
override
intarea ()}
class
rectangletester",
a);console
.readkey
();}}}
virtual
using
system
;namespace
public
virtual
intarea()}
class
rectangle
:shape
public
override
intarea ()}
class
********
:shape
public
override
intarea()}
class
caller",
a);}}
class
tester}}
public
static
boxoperator+(
boxb
,boxc)
可過載和不可過載運算子
運算子描述
+, -, !, ~, ++, --
這些一元運算子只有乙個運算元,且可以被過載。
+, -, *, /, %
這些二元運算子帶有兩個運算元,且可以被過載。
==, !=, <, >, <=, >=
這些比較運算子可以被過載。
&&, ||
這些條件邏輯運算子不能被直接過載。
+=, -=, *=, /=, %=
這些賦值運算子不能被過載。
=, ., ?:, ->, new, is, sizeof, typeof
這些運算子不能被過載。
命名空間
的設計目的是提供一種讓一組名稱與其他名稱分隔開的方式。在乙個命名空間中宣告的類的名稱與另乙個命名空間中宣告的相同的類的名稱不衝突。
命名空間可以被巢狀,即您可以在乙個命名空間內定義另乙個命名空間
Web前端 Html部分筆記(二)
作用 用於給文字新增標題語義 格式說明 作用讓內容換行 格式aaaaa bbbbb 說明br的意思是不另起乙個段落進行換行,如果需要另起了乙個段落,則應該使用p標籤來做。作用告訴瀏覽器哪些文字是乙個段落 格式 xx 說明 在瀏覽器中會單獨佔一行且自動換行。p標籤與br標籤的區別 1 相同之處 br和...
c 學習筆記第二部分
part 2 一 陣列 指標 在c 中的陣列std string str string是std類裡面的乙個物件 這個語句就是命名乙個陣列名字叫做str 2.c 允許指標群 p,就是多個指標有同樣的值 int p1 myint int p2 myint c 支援無型別 void 指標,就是沒有被宣告為...
我的C 筆記 函式部分
include include c 的數學函式庫 using namespace std class point void point init int x 4,int y 2 point point point p intmain 函式部分 乙個c 函式可以由主函式和幾個子函式組成,主函式是程式執...