-
重載運算符
查看全部 -
virtual:虛方法? ?使用override進(jìn)行重寫
查看全部 -
事件觸發(fā) ,事件發(fā)布()
查看全部 -
事? 件
事件發(fā)布者:通知某件事件發(fā)生的,就是發(fā)布者
事件訂閱者:對某件事件關(guān)注的,就是訂閱者
事件行為:觸發(fā)和注冊
? ? ? ? ? ? ? ? 事件發(fā)生時,會通知所有關(guān)注該事件的訂閱者---調(diào)用訂閱者(對象)的注冊函數(shù)【注冊,告訴發(fā)布者調(diào)用哪一個注冊函數(shù)】
? ? ? ? ? ? ? ? 想在事件發(fā)生時被通知,必須注冊表示關(guān)注
事件訂閱:
? ? ?事件名稱+=方法1
? ? ?事件名稱-=方法2? 【方法可以是,實例方法,靜態(tài)方法,匿名方法、Lambada表達(dá)式】
查看全部 -
運算符
查看全部 -
?class Program
? ? {
? ? ? ? static void Main(string[] args)
? ? ? ? {
? ? ? ? ? ? Pet d = new Dog();
? ? ? ? ? ? Cat c = new Cat();
? ? ? ? ? ? Pet p = new Pet();
? ? ? ? ? ? p.name = "父親";
? ? ? ? ? ? d.name = "大黃";
? ? ? ? ? ? c.name = "咪咪";
? ? ? ? ? ? p.dw();
? ? ? ? ? ? d.dw();
? ? ? ? ? ? c.dw();
? ? ? ? }
? ? }
? ? public class Pet
? ? {
? ? ? ? public string name;
? ? ? ? public void dw()?
? ? ? ? {
? ? ? ? ? ? Console.WriteLine("動物名稱"+name);
? ? ? ? }
? ? };
? ? public class Dog : Pet?
? ? {
? ? ? ? new public void dw()?
? ? ? ? {
? ? ? ? ? ? Console.WriteLine("狗狗名稱" + name);
? ? ? ? }
? ? ? ??
? ? };
? ? public class Cat : Pet
? ? {
? ? };
具體調(diào)用那個方法根據(jù)賦值對象前的引用對象決定。
查看全部 -
隱藏方法
查看全部 -
這是一堂比較重點的課程,學(xué)習(xí)后可繼續(xù)復(fù)習(xí)
查看全部 -
注意public不要漏掉
查看全部 -
virtual
override
虛方法和多態(tài)
查看全部 -
通過new關(guān)鍵字屏蔽基類中的方法,從新定義方法
查看全部 -
自然界一切皆對象,易維護(hù),易開發(fā),易擴展
查看全部 -
封裝,集成,多態(tài)
查看全部 -
abstract 不能有函數(shù)體
查看全部 -
如圖屏蔽了pet類printname方法
查看全部 -
隱藏方法 隱藏基類的方法
查看全部 -
namespace projGetMaxScore
{
? ?public class Pet:Object//默認(rèn)繼承Object,可以省略不寫
? ?{
? ? ? ?public Pet(string name)
? ? ? ?{
? ? ? ? ? ?_name = name;
? ? ? ?}
? ? ? ?protected string _name;//保護(hù)的,派生類才能訪問
? ? ? ?virtual public void Printname()
? ? ? ?{
? ? ? ? ? ?Console.WriteLine("Pet's name is "+ _name);
? ? ? ?}
? ?}
? ?public class Dog:Pet{
? ? ? ?public Dog(string name):base(name)//引用基類默認(rèn)值
? ? ? ?{
? ? ? ?}
? ?}
? ?public class Cat:Pet {
? ? ? ?public Cat(string name):base(name)
? ? ? ?{
? ? ? ?}
? ? ? ?override public void Printname()//隱藏繼承方法
? ? ? ? {
? ? ? ? ? ?Console.WriteLine("寵物的名字是 "+ _name);
? ? ? }
}
? ?class Program
? ?{
? ? ? ?static void Main(string[] args)
? ? ? ?{
? ? ? ? ? ?Pet[] pets=new Pet[]{new Dog("jack"),new Cat("tom")};
? ? ? ? ? ?for(int i=0;i<pets.Length;i++)
? ? ? ? ? ? ? ?pets[i].Printname();
? ? ? ? ? ?
? ? ? ?}
? ?}
}查看全部 -
通過指向派生類的基類引用,我們僅僅能訪問派生類的基類部分。
Pet cat=new Cat();
cat.PrintName();//調(diào)用的是基類中的PrintName方法
但是如果是virtual和override情況下,會先在Pet中看到是虛方法,然后就去派生類中找有沒有重寫方法,調(diào)用重寫過的方法查看全部 -
接口
查看全部 -
密閉方法
查看全部 -
為什么需要密閉
查看全部 -
抽象類
查看全部
舉報