三个特性主要目标:重用性(安全性)、灵活性和扩展性。
面向对象特性: 封装、继承、多态
一,封装
什么是封装?
将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的公共属性
来实现对隐藏信息的操作和访问。
访问修饰符: C#中有四种访问修饰符:public、private、protected和internal。这些访问修饰符可用于控制类中数据和方法的访问权限.
方法:实现细节可以隐藏起来并只暴露实现所需的最小接口
二.继承
什么是继承?
继承的作用:解决类与类直接 属性或者方法重复的问题
1.一个类继承另一个类 其中被继承的类(父类 超类 基类) 继承的类(子类 派生类)
2.继承的格式 A类(子类) : B类(父类)
3.继承关系建立后 子类拥有父类的成员 反之父类不继承子类成员。 父类私有成员 子类无法使用
4.一个父类可以同时被多个子类继承 子类可以间接继承父类
5 .object是所有类的父类 如果一个类 没有明确继承关系 默认继承于object类
6.C#中类与类之间是单继承关系(子类只能同时继承一个父类) 利用接口实现多继承(后续讲)
7.创建子类对象时,系统默认先调用父类构造方法,然后再调用子类构造方法
8.当父类有有参构造方法时.必须提供一个无参构造函数 供子类调用
9.子类在调用其有参或者无参构造函数时,默认调用父类的 无参构造函数
如果想要调用父类有参构造函数 使用在子类构造函数后添加:base(参数名)
多态
什么是多态?
即一个接口,多个功能 同一种操作作用于不同的对象,可以有不同的解释,产生不同的执行结果
包含:
重写 抽象类 接口 重载
重载
在一个类中或者子类中函数名相同,参数类型或者顺序不同构成重载,与返回类型无关
重写:
在子类和父类中,子类中的方法名称和父类方法名称相同,参数相同
使用关键字 virtual,将父类的方法标记为虚方法,用 override 关键字,虚方法可以被子类重写
public class Person
{
private string _name;
public string Name
{
get { return _name; }
set { _name = value; }
}
public Person(string name)
{
this.Name = name;
}
public virtual void SayHello()
{
Console.WriteLine("我是人类");
}
}
public class Chinese:Person
{
public Chinese(string name)
:base(name)
{
}
public override void SayHello()
{
Console.WriteLine("我是中国人,我叫{0}", this.Name);
}
}