封装:它的意义在于防止代码被恶意篡改
它提供了许多访问修饰符来保证封装:
public 访问无限制
protected 只能在本类和派生类中访问
private 只能在本类中访问
internal 只有同一个项目中的类可以访问
继承:一个类继承另一个类,子类可以访问父类中的属性和方法,除非父类的访问权限不允许
多态性:分为重载和覆盖两种。重载是函数名和一致,参数不一致,返回类型可以不一致,覆盖是函数名一致,但方法体不一致,例如虚函数和抽象类
虚函数:父类中定义允许派生类重写的方法,用Virtual关键字定义,且必须给出方法体
public class Animal { public virtual void EatFood() { Console.WriteLine("Animal吃东西"); } } public class cat : Animal { public override void EatFood() { Console.WriteLine("Cat吃东西"); //base.EatFood(); } }
抽象方法:在父类中定义子类必须实现的方法,用abstract关键字定义,且必须没有方法体
public abstract class Animal//含有抽象方法的类必须是abstract { public abstract void eat(); } public class cat : Animal { public override void eat() { Console.WriteLine("catl重写的抽象方法"); } }
隐藏方法:在派生类中定义和父类中同名的方法,父类中的方法既可以是虚方法也可以不是,使用new关键字来定义
public class animal { public void Sleep() { Console.WriteLine("Animal Sleep"); } } public class cat : animal { //则在派生类Cat中定义隐藏方法的代码为: new public void Sleep() { Console.WriteLine("Cat Sleep"); } }
抽象方法和虚方法的区别
1.抽象方法不能提供方法体,在派生类中必须强制重写该方法,虚方法必须提供了方法体,在派生类中可以不覆盖该方法。
2.包含抽象方法的类必须是抽象类,且不能实例化,包含虚方法的类可以实例化。
参考博客地址:http://www.cnblogs.com/zhangkai2237/archive/2012/12/20/2826734.html