C#篇-面向对象之继承

       面向对象有三大特色:多态、继承和封装,我们已经熟悉的不能再熟悉了,然而在c#中要怎么用呢?现在就着重总结一下继承。

在很早之前就听他们说VB并不是真正的面向对象,它是一种面向过程的设计语言,在学习C#的这些日子里,逐渐明白了面向对象是怎么一回事。在以前我们敲代码的时候是一个功能一个功能的实现,而现在我们是要将里面用到的词抽象出来。对于学生信息系统,我们要完成学生上机的代码就要在里面加入功能,而面向对象是将学生类、老师类抽象出来。

       现在就看一下多态,多态之前在讲UML的时候就已经被提到过,当发出弹奏的命令时,小提琴、钢琴等乐器都会弹奏,但是演奏的形式是不同的(小提琴是要拉、钢琴是要弹的)。

继承


       对于人类、老师类、学生类都有年龄、性别、年龄等属性,我们无需再每一个类中都重复写这些代码,我们可以把相同的东西抽象出来,抽象出一个父类,然后子类继承即可。子类也叫作派生类,父类也叫作基类。而Object 类是所有类的父类。

继承两大特性


1传递性   子类继承父类的时候 子类中的值可以传到父类中

2单根性   父类只有一个,子类可以有很多个


调用构造函数


<span style="font-size:18px;">Public class Teacher:Person
{
Public Teacher(string name,int age,char gender)
This.Name=name;
This.age=18;
}
</span>
我们还见过在后面加:Base(参数的情况)

加入base后和父类相同的姓名、性别属性可以不再加了,写子类特有的就可以。


修饰符

Protected 访问修饰符不允许其他非子类访问。也就是只能在子类间可以使用。


重写


子类和父类都有相同的函数名的时候,可以用重写方法

父类中声明虚方法

   Public virtual double Show()

  {

  }

子类重写

  Public override double Show()

  {

  }

和重写很类似的是 抽象类和抽象方法的运用


抽象类的声明


<span style="font-size:18px;">Public  abstract  class Animal
{
   
   public abstract void shout();

}</span>


抽象方法的特性


抽象方法没有方法体

抽象类可以有非抽象成员

抽象方法必须放在抽象类中

抽象类只能做基类无法实例化

子类必须要对父类中的抽象方法进行重写


虚方法 VS 抽象方法


   既然子类都可以重写父类的方法,那么抽象方法和虚方法有什么不同呢? 

  抽象方法和虚方法的区别在于:虚拟方法有一个实现部分,并为派生类提供了覆盖该方法的选项,相反,抽象方法没有提供实现部分,强制派生类覆盖方法(否则 派生类不能成为具体类);
  abstract方法只能在抽象类中声明,虚方法则不是;
  abstract方法必须在派生类中重写,而virtual则不必;
  abstract方法不能声明方法实体,虚方法则可以。

  我对于抽象类的理解举例来说:动物都会叫,但是叫的方式不同,在父类中你不能规定怎样叫,只能声明一种会叫的方法,方法实体中不会声明具体行为。



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 15
    评论
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值