抽象類>什麼是抽象類
抽象類的聲明中包含abstract關鍵字。隻要有一個方法具有abstract修飾即聲明為抽象方法,那麼這個類就是抽象類。
抽象類,就是提供類的定義,不提供類的具體實作細節(可實作部分細節,但不全實作)。抽象類的實作交由派生類來完成。
抽象類>聲明抽象類
代碼
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
/// <summary>
/// 購買書籍的抽象類
/// </summary>
public abstract class BuyBookOperate
{
public abstract void BuyBook();
//書店
public abstract string BookShop
{ get; set; }
//書名
public abstract string BookName
//支付行為
public void PayMoney()
{
Console.WriteLine("支付款項正在進行中......");
}
//總金額
private int _totalmoney;
public int TotalMoney
get
{
return _totalmoney;
}
set
_totalmoney = value;
if (_totalmoney > 100)
{
Console.WriteLine("您購買的書籍價格超過了100塊錢");
}
}
}
抽象類>實作抽象類
/// 抽象類的實作。
public class ConcreteBuyBook : BuyBookOperate
//實作抽象方法
public override void BuyBook()
BookShop = "新華書店";
BookName = "C#的書籍";
TotalMoney = 101;
PayMoney();
private string _bookshop;
//實作抽象屬性
public override string BookShop
return _bookshop;
_bookshop = value;
private string _bookname;
//實作抽象屬性。
public override string BookName
return _bookname;
_bookname = value;
運作它
using System.Collections;
class Program
static void Main(string[] args)
ConcreteBuyBook cb1 = new ConcreteBuyBook();
Console.WriteLine(cb1.ToString() + "類的輸出結果為:");
Buybook(cb1);
/// <summary>
/// 買書的動作,傳遞抽象類的實作.
/// </summary>
/// <param name="bop"></param>
static void Buybook(BuyBookOperate bop)
//調用在抽象類中定義的BuyBook方法
bop.BuyBook();
多态>什麼是多态
具有名稱相同的方法或屬性,的多個類,這些類具有不同的行為,但共享相同的基類或接口。
多态>多态的實作
Concrete2BuyBook.cs
public class Concrete2BuyBook : BuyBookOperate
BookShop = "某專業書店";
BookName = "ASP.NET的書籍";
TotalMoney = 102;
Program.cs
Concrete2BuyBook cb2 = new Concrete2BuyBook();
Console.WriteLine(cb2.ToString() + "類的輸出結果為:");
Buybook(cb2);
接口>什麼是接口
接口和抽象類相同點是,不能被直接執行個體化。
接口和抽象類不同點是,接口并不提供任何實作,接口所有的方法與屬性都是抽象的。可以利用接口實作多繼承。
接口>實作接口
如果聲明兩個具有相同方法名稱的接口,當在一個類中同時進行實作這兩個接口,要對其中一個隐式實作接口,而另外一個要求實作顯式接口。否則報錯。
namespace interface2
public interface Ibook1
void GetPrice();
public interface Ibook2
public class Book : Ibook1, Ibook2
#region Ibook2 成員
public void GetPrice()
Console.WriteLine("Ibook2的隐式接口實作");
#endregion
#region Ibook1 成員
void Ibook1.GetPrice()
Console.WriteLine("Ibook1顯示接口實作");
Interface1.cs
合乎自然而生生不息。。。