面向物件OOP基礎
阿新 • • 發佈:2019-01-25
物件和類:
物件是OOP應用程式的組成部件。類是用於例項化物件的型別定義。在.NET中,所有的東西都是物件。
物件的生存週期:
物件通過呼叫它的一個建構函式來例項化。不需要物件時,就執行其解構函式,刪除它。
靜態和例項成員:例項成員只能在類的物件例項上使用,靜態成員只能直接通過類定義使用。它與例項不關聯。
介面:介面是可以在類上實現的公共屬性和方法的集合,可以給例項型別的變數賦予其類定義實現了該介面的任意物件的值,之後通過該變數,可以使用該介面定義的成員。
繼承:繼承是一個類定義派生於另一個類定義的機制。只能有一個父類。子類不能訪問父類的私有成員,但可以定義受保護的成員,受保護的成員只能在該類和派生於該類的子類中使用。所有的類都有一個System.Object結尾的繼承連。C#中,System.Object有一個別名object
多型性:從一個派生類中例項化的所有物件都可以看作是其父類的例項。
物件關係和特性:物件可以包含其他物件,也可以表示其他物件的集合。
using System;
using System.Collections.Generic;
using System.Text;
namespace CSharpBaseKnowledge
{
public class Chapter8
{
public static void ManipulateDrink(HotDrink drink)
{
drink.AddMilk();
drink.Drink();
if (drink is ICup)
{
ICup cupInterface = drink as ICup;
cupInterface.Wash();
}
Console.ReadLine();
}
}
public interface ICup
{
string Color { get; set; }
int Volume { get; set; }
void ReFill();
void Wash();
}
public class HotDrink
{
public HotDrink()
{
}
public int Milk { get; set; }
public int Sugar { get; set; }
public virtual void Drink()
{
Console.WriteLine("HotDrink()" + ": Drink() ");
}
public void AddMilk()
{
Milk = 2;
Console.WriteLine("HotDrink()" + ": AddMilk() 2 ");
}
public void AddSugar()
{
Sugar = 2;
Console.WriteLine("HotDrink()" + ": AddSugar() 2 ");
}
}
public class CupOfCoffee : HotDrink, ICup
{
public string Color { get; set; }
public int Volume { get; set; }
public override void Drink()
{
Console.WriteLine("CupOfCoffee()" + ": Drink() ");
}
public void ReFill()
{
Console.WriteLine(" CupOfCoffee ReFill()");
}
public void Wash()
{
Console.WriteLine(" CupOfCoffee Wash()");
}
}
public class CupOfTea : HotDrink, ICup
{
public string Color { get; set; }
public int Volume { get; set; }
public void ReFill()
{
Console.WriteLine(" CupOfTea ReFill()");
}
public void Wash()
{
Console.WriteLine(" CupOfTea Wash()");
}
}
}
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
// ArrayTest.TestArray();
// BaseTest.Chapter7();
HotDrink xxHd = new HotDrink();
Chapter8.ManipulateDrink(xxHd);
CupOfCoffee cupcoffee = new CupOfCoffee();
Chapter8.ManipulateDrink(cupcoffee);
CupOfTea cuptea = new CupOfTea();
Chapter8.ManipulateDrink(cuptea);
}
}
結果截圖