最近一直好懒,真的好懒,琐事也多。学习也慢慢落下了,得慢慢补回来了。
学习一下Abstract,Virtual,Interface这三个关键字。其实在项目开发中,用到的地方着实不多。
Virtual--虚方法
在基类中使用该关键字定义某方法,可以在派生类中使用override关键字重写该方法
派生类也可以不重写,直接使用基类中的方法
Abstract--抽象方法
抽象方法所在的类必须为抽象类
抽象类不能直接实例化,必须由派生类实现
抽象方法不能包含主体【没有主体的意思就是一个方法没有{}】,必须由派生类override方式实现该方法,和interface有点像
在基类中使用该关键字定义某方法,可以在派生类中使用override关键字重写该方法
派生类也可以不重写,直接使用基类中的方法
Abstract--抽象方法
抽象方法所在的类必须为抽象类
抽象类不能直接实例化,必须由派生类实现
抽象方法不能包含主体【没有主体的意思就是一个方法没有{}】,必须由派生类override方式实现该方法,和interface有点像
Interface--接口
个人觉得和抽象方法差不多,应该说用法差不多
个人觉得和抽象方法差不多,应该说用法差不多
virtual意义(举例):爸爸告诉儿子,这边有座金山,你可以挖出来,我有一个现成的方法告诉你怎么挖,
儿子可以使用爸爸的方式挖,也可以自己override用新的方式挖
abstract意义(举例):爸爸告诉儿子,这边有座金山,你可以挖出来,没有现成方法,只能儿子自己去找方法挖(而且是必需找)
儿子可以使用爸爸的方式挖,也可以自己override用新的方式挖
abstract意义(举例):爸爸告诉儿子,这边有座金山,你可以挖出来,没有现成方法,只能儿子自己去找方法挖(而且是必需找)
下面代码解释一番:
public abstract class Person
{
public virtual void MorningGreeting()
{
Console.WriteLine("Good Morning");
}
public abstract void EveningGreeting();//抽象方法不能包括主题
}
public class Chinese : Person
{
public override void MorningGreeting() //重写基类中的方法,不是必须的。不写则使用基类中的方法
{
Console.WriteLine("早上好");
}
public override void EveningGreeting()//重写基类中的方法,必须的。
{
Console.WriteLine("晚上好");
}
}
public static void TestVirtualAbstract()
{
Chinese chinese = new Chinese();
chinese.MorningGreeting();
chinese.EveningGreeting();
}
#region 举例一下interface
public interface IPerson
{
void MorningGreeting(); //错误 1.不能使用public修饰符 2.接口成员不能有定义
}
public class IChinese : IPerson
{
public void MorningGreeting()
{
Console.WriteLine("早上好");
}
}
public class IEnglishmen : IPerson
{
public void MorningGreeting()
{
Console.WriteLine("Good Morning");
}
}
public class IJapanese : IPerson
{
public void MorningGreeting()
{
Console.WriteLine("おはよう");
}
}
public static void TestInterface()
{
IPerson person;
person = new IChinese();
person.MorningGreeting();
person = new IEnglishmen();
person.MorningGreeting();
person = new IJapanese();
person.MorningGreeting();
}
#endregion