博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#继承小结——面向对象编程的三大机制之一
阅读量:6357 次
发布时间:2019-06-23

本文共 842 字,大约阅读时间需要 2 分钟。

    继承反应了类和类之间的关系。

    世界上很多事物都是有共性的,共性的那一部分我们就抽象为基类,用于派生其它类,这样提高了代码的复用性,使得代码的结构清晰易读,而且易于代码的扩展和维护。 

    C#的继承只能继承自一个基类,这一点不同于C++的继承。

    C#的继承具有传递性,即B继承自A,C继承自B,则C具有A的所有特性。

    C#的继承隐式为public的。

    假如不在派生类构造器中显示调用一个基类构造器,编译器会自动插入对基类的默认构造器的一个调用,然后才会执行派生类构造器中的代码, 如果基类没有默认的构造器,会造成编译错误。

    举例:动物的共性:有嘴巴,有眼睛,有鼻子,可以移动,能够吃东西

    所以定义基类   (包含动物的共性)

public class Animal {
...... }

 

再定义具体的动物的时候就可以继承自基类Animal,不用再重新定义这些基本的特征,只定义自己独有的特性就好。

例如:Dog 

public class Dog:Animal     {   
//编译器会自动插入对基类的默认构造器的一个调用,然后才会执行派生类构造器中的代码 public string Bark;//狗叫声     }
public class Dog : Animal {
//在派生类构造器中显示调用一个基类构造器 public Dog()             : base() {
} public string Bark; }

注意:

可以把一个派生类的值赋给基类,但不能把一个基类的值赋给派生类,因为基类不能转换为派生类,基类中只包含了派生类的一部分特性。

Animal animal=new Dog(); 正确的

Dog dog=new Animal();错误

 

 

 

 

转载于:https://www.cnblogs.com/greenteaone/archive/2012/01/12/2320596.html

你可能感兴趣的文章
你还在看《深入理解Java虚拟机》的运行时数据模型吗?
查看>>
RIS,创建 React 应用的新选择
查看>>
线性结构上的动态规划--算法竞赛入门经典笔记
查看>>
面试官:你使用webpack时手写过loader,分离过模块吗?
查看>>
Ubuntu 16.04系统下 对OpenJDK编译好的Hotspot 进行调试
查看>>
00-利用思维导图梳理JavaSE基础知识-持续更新中!
查看>>
java中三种注释及其实际应用的意义
查看>>
【三石jQuery视频教程】01.图片循环展示
查看>>
ngrok
查看>>
ThinkPHP 模板变量输出
查看>>
android系统信息(内存、cpu、sd卡、电量、版本)获取
查看>>
HTML5、WebKit与移动应用开发
查看>>
面google的试题,对google面试题的衍生推导
查看>>
Eclipse Debug Android Native Application
查看>>
java动态代理
查看>>
node.js原型继承
查看>>
揭露让Linux与Windows隔阂消失的奥秘(1)
查看>>
我的友情链接
查看>>
Mysql备份和恢复策略
查看>>
linux17-邮件服务器
查看>>