OOP-面向对象
封装,继承多态
一个桌子,用面向对象来描述一下它这个桌子项目
定义桌子类
对象:桌子
桌子的属性:名字,材质,体积
桌子的方法;放东西(方法)
现在桌子要放书,放花瓶,放文件(这里就已经多态了)
那么实现多态主要有三种方法:
1:虚方法:virtual
父类:桌子类
public class Table { public string Name{get;set;} public virtual void put() { Console.WriteLine("父类中的放方法"); } }
子类:办公桌也要放东西
public class 办公桌:Table
{
public override void put)
{
//具体实现
}
}
子类:餐桌也要放东西
public class 餐桌:Table
{
public override void put)
{
//具体实现
}
}
那么子类就 override重写父类的方法
2:抽象方法:abstract
于是我就写了三个方法,想了一下这样不对,如果以后继续要放东西,都要重新加一个方法,那多麻烦
于是定义一个抽象类,抽象类里面有一个具体的放东西方法,但没有具体实现
每次我要用到这个放东西的方法,那么我就去重写它-代码重用,也实现了多态(一个事物不同的表示方法)
现在又有一个问题
3:接口:interface
我桌子有一个办公桌,和餐桌,他们都有一个放东西方法,难道我又要定义另外一个抽象类,来实现?
我想了下,都是放东西方法,我得定义一个规则(接口),只要体积不超过多少,符合这个规则,以后不管你哪张桌子想放什么东西,只要符合这个规则(接口),那么就可以实现这个方法
于是我就定义一个接口,里面有一个方法,任何桌子想放东西只要继承这个接口,去实现这个方法就行