c#基础-oop(面向对象理解)

时间:2023-03-09 07:15:09
c#基础-oop(面向对象理解)

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

我桌子有一个办公桌,和餐桌,他们都有一个放东西方法,难道我又要定义另外一个抽象类,来实现?

我想了下,都是放东西方法,我得定义一个规则(接口),只要体积不超过多少,符合这个规则,以后不管你哪张桌子想放什么东西,只要符合这个规则(接口),那么就可以实现这个方法

于是我就定义一个接口,里面有一个方法,任何桌子想放东西只要继承这个接口,去实现这个方法就行