C#之面向对象三大要素

一、面向对象

1、什么是面向对象?

面向对象是一种思想,面向对象是将功能等通过对象来实现,将功能封装进对象之中,让对象去实现具体的细节,在面向对象中,将数据作为第一位,而方法或者说是算法作为其次,这是对数据的一种优化,操作起来更加方便,简化了过程。

2、为什么要用面向对象?

无论是在C#还是在VB中,都反复提及到了面向对象,那么为什么要使用面向对象呢?也就是说面向对象有哪些好处呢?

面向对象提高了程序的可复用性,可扩展性,和灵活性,通过封装,继承和多态把程序的耦合度降低,使程序更加的灵活,容易修改,并且易于复用。

二、封装

1、封装定义

每个对象都包含它能进行操作所需要的所有信息,这个特性就称为封装。

个人理解:封装其实类似于一个函数,每个对象都可以实现具体特定的功能,将它实现这个功能所需要的代码都写到一起,这个整体就叫做这个对象的封装。

2、封装的好处

第一:良好的封装能够减少耦合(比如一个计算器他可以实现计算和显示结果的功能,将计算模块和显示模块分开写,就减少了程序之间的耦合)

第二:类内部的实现可以自由地修改

第三:类具有清晰的对外接口

三、继承

今天在进行迷你故事topic的时候,平平提到了一个问题:是水果包含的范围大呢?还是苹果包含的范围大呢?

这个问题让我们联想到了面向对象中的继承,水果提取了所有水果的共性,而苹果是在具备水果特性的基础上进一步扩展了自己的特性,如果这样理解的话,那是不是苹果所包含的范围大呢?

1、继承的定义

对象的继承代表了一种‘is a’的关系,如果俩个对象A和B,可以描述为‘B是A’,则表明B可以继承A。

例如:猫是哺乳动物,就说明了猫与哺乳动物之间的继承与被继承的关系。

继承者还可以理解为是对被继承者的特殊化,因为他除了具备被继承者的特性外,还具备自己特有的个性。

继承定义了类如何相互关联,共享特性。继承的工作方式是:定义父类和子类,或叫做基类和派生类,其中子类继承父类的所有特性。子类不但继承了父类的所有特性,还可以定义新的特性。

2、继承的好处

如果子类继承父类:

第一:子类拥有父类非private的属性和功能

第二:子类具有自己的属性和功能,即子类可以扩展父类没有的属性和功能

第三:子类还可以以自己的方式实现父类的功能(方法的重写)

不用继承的话,如果要修改功能,就必须在所有重复的方法中修改,代码越多,出错的可能就越大,而继承的优点是,继承使得所有子类公共的部分都放在了父类,使得代码得到了共享,这就避免了重复,另外,继承可以使得修改或继承而来的实现都比较容易。

3、继承的缺点

父类变,则子类不得不变。

继承会破坏包装,父类实现细节暴露给子类,这其实是增大了俩个类之间的强耦合关系。所以继承就是一种类与类之间强耦合的关系。

四、多态

1、多态的定义

多态表示不同的对象可以执行相同的动作,但要通过他们自己的实现代码来执行。

2、使用多态需要注意一下几点

第一:子类以父类的身份出现

第二:子类在工作时以自己的方式来实现

第三:子类以父类的身份出现时,子类特有的属性和方法不可以使用

为了使子类的实例完全接替来自父类的类成员,父类必须将该成员声明为虚拟的,这是通过该成员的返回类型之前添加virtual关键字来实现。

将父类实现替换为他自己的实现,就是方法的重写(override),或叫方法赋写。

不同的对象可以执行相同的动作,但是要通过他们自己的实现代码来执行。

多态的原理是当方法被调用时,无论对象是否被转换为其父类,都只有位于对象继承链最末端的方法实现会被调用。


最后献上一张非常生动,形象的图!吐舌头


  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 89
    评论
评论 89
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值