------- Windows Phone 7手机开发、.Net培训、期待与您交流! -------
-
密封类
1、sealed 标记一个密封类,不能被子类继承
2、禁止子类重写父类的方法
特殊处理。、,防止别的类继承后造成混乱。商业问题
static void Main(string[] args)
{
Chinese c = new Chinese();
c.Name = "aaa";
Console.WriteLine(c.Name);
Console.ReadKey();
}
sealed class Person
{
public string Name
{
get;
set;
}
}
class Chinese : Person //错误“密封类.Program.Chinese”: 无法从密封类型“密封类.Program.Person”派生
{
}
-
抽象类、抽象方法
什么叫抽象类??
就是“只说不做的”, 不能被实例化(不能new)
比如动物都有一个eat和bark方法。但是由于每个动物的eat和bark是不一样的,所以父类中定义的方法是不需要被实例化的,这时就可以把它们定义成抽象类。由子类继承父类并重写这些方法。
1、抽象方法不能有任何的方法体。
2、抽象成员必须标记为abstract
3、抽象成员必须包含在抽象类中,不能写在一个实例中
4、并且抽象成员不能是私有的(private)
5、抽象类中可以包含实例成员
6、抽象类是不能被实例化的(抽象类的作用就是让继承)
7、子类继承抽象类后,必须重写父类中的所有抽象成员(除非子类也是一个抽象类,则可以不重写)
8、抽象类是有构造函数的,虽然不能被实例化
9、抽象类的目的:为了重写,即实现多态(代码重用)
-----------------------------------------------------------------------------
如果父类中的方法有默认实现,并且父类需要被实例化,这时可以考虑将父类定义成一个普通类,用虚方法来实现多态。
如果父类中的方法没有默认实现,父类也不需要被实例化,则可以将该类定义为抽象类
- 用new关键字隐藏父类方法
哪些情况下会用到new关键字 写一个新方法
父类中有一个方法SayHello(),子类继承父类,其中也有一个SayHello(),那么如果这时不用父类中的方法,自己重写一个就要用到new关键字了
------- Windows Phone 7手机开发、.Net培训、期待与您交流! -------