面向对象的三大特征:封装 继承 多态
封装:对方法、属性、字段的包装(把数据和方法封装在类中,调用的时候实例化对象就可以)
好处:对于使用者来说:方便使用 对于使用者来说:对于开发者来说:易扩展 重用性强 易修改(直接定位到某个修改的 方法)对代码的组织结构比较清晰 |
继承:子承父业 继承父类非私有的属性、方法 、字段
好处:代码重用 |
多态:多种形态(同一个东西在不同状态下的身份)
好处:依赖于抽象,而不依赖于具体,增加灵活性 |
只想了解面向对象三大特征概念的上面的就够了,下面的例子可以详细理解多态
下面从两个方面来理解一下多态
1.在接口的情况下理解多态
话不多说上例子
interface Iworker
{
void work();
}
interface ITeacher{
void Teach();
}
interface Iboy
{
void play();
}
interface IPerson
{
void Eet();
}
class ChildWorker : IPerson, Iboy, Iworker
{
public void Eet()
{
throw new NotImplementedException();
}
public void play()
{
throw new NotImplementedException();
}
public void work()
{
throw new NotImplementedException();
}
}
class Boy : IPerson, Iboy
{
public void Eet()
{
throw new NotImplementedException();
}
public void play()
{
throw new NotImplementedException();
}
}
class Program
{
static void Main(string[] args)
{
//只要实现了iboy接口的都可以用
//多种形态的第一种用法
Iboy[] boys = new Iboy[5];
boys[0] = new Boy();
boys[1] = new ChildWorker();
}
}
- 在继承的情况下理解多态 (里氏替换原则:父类型变量接收子类型对象)
话不多说上例子
//继承的情况下理解多态
class Person {
public string Name { get; set; }
}
/// <summary>
/// 继承后拥有了父类的身份
/// </summary>
class boy2:Person
{
public void Play() { }
}
class Program
{
static void Main(string[] args)
{
//继承了父类就有了父类的属性和方法
boy2 boy = new boy2();
boy.Name = "zhangsan";
}
}