1. 類
1.1 定義類
Class 類名
{
// 類的實現
// 成員變量、成員函數等
}
1.2 構造函數
默認的構造函數是不帶參數的
Person *p = new Person();
我們可以複寫父類的構造方法,以達到我們自己的目的,傳遞參數等:
using System;
namespace Test
{
class Person
{
public string userName; // 用戶名
public Person(string name)
{
Console.WriteLine("對象已創建,name = {0}", name);
userName = name;
}
}
class Program
{
static void Main(string[] args)
{
Person p = new Person("張三");
Console.WriteLine("Person: {0}", p.userName);
}
}
}
打印如下:
對象已創建,name = 張三
Person: 張三
Press any key to continue...
1.2 析構函數
這裏瞭解一下析構函數的概念。
// 析構函數
~Person ()
{
Console.WriteLine("對象已刪除");
}
在對象被釋放後會執行析構函數。
1.3 靜態成員
static 關鍵字修飾靜態成員。
注意:當我們聲明一個類成員爲靜態時,意味着無論有多少個類的對象被創建,只會有一個該靜態成員的副本。
關鍵字 static 意味着類中只有一個該成員的實例。
以下這個程序可以讓我們更好的理解什麼是靜態變量:
using System;
namespace Test
{
class StaticVar
{
public static int num;
public void cout()
{
num++;
}
public int getNum()
{
return num;
}
}
class Program
{
static void Main(string[] args)
{
StaticVar v1 = new StaticVar();
StaticVar v2 = new StaticVar();
StaticVar v3 = new StaticVar();
v1.cout();
v2.cout();
v3.cout();
Console.WriteLine("v1 num: {0}", v1.getNum());
Console.WriteLine("v2 num: {0}", v2.getNum());
Console.WriteLine("v3 num: {0}", v3.getNum());
}
}
}
打印如下:
v1 num: 3
v2 num: 3
v3 num: 3
Press any key to continue...
也就是說,靜態變量是類所屬的,對象也只是引用,該變量只有一個。
2.繼承和多態
“子類和父類”,“基類和派生類”這種關係。
2.1 繼承的定義
class 子類 : 父類
{
}
2.2 理解繼承和多態
這裏有一個例子:
using System;
namespace Test
{
class Car
{
public string brand; // 品牌
public string model; // 型號
// 定義一個run方法。注意C# 中方法名首字母大寫。注意這裏的virtual。
public virtual void Run()
{
Console.WriteLine("the car is runing !");
}
}
class Bicycle : Car // 自行車繼承於Car
{
// 複寫父類方法,父類方法使用virtual修飾,所以這裏不會報警告,否則會。
public override void Run()
{
base.Run(); // 調用父類方法,也可以不調用,這個根據業務邏輯。
Console.WriteLine("right, bicycle is runing !");
}
}
class Program
{
static void Main(string[] args)
{
Bicycle b = new Bicycle();
b.Run();
}
}
}
打印如下:
the car is runing !
right, bicycle is runing !
Press any key to continue...
Bicycle繼承於Car,繼承了父類的方法Run(),並通過重寫這個方法,表現出不同形式,這就是多態。
Bicycle能繼承父類的public的變量、方法。