面向对象的世界

在现实的世界里,发现事物可以进行分类,并且各个分类中又有这关系。

在面向对象的世界里,人们用类来模拟现实世界中的各种关系。
从大的范围来说,人属于人类,如果按照不同的身份将人类进行划分,又可以分为老师,医生,律师,学生等等。。。
如果要用编程来描述学生和老师这两种不同的身份
想到学生这种身份会有,学校,班级,成绩等特有的属性,当然还有作为人类共有的一些东西,比如,姓名,年龄,性别等。
作为老师这种身份会有,工资等特有的属性,也有一些和学生共同的东西,比如,姓名,年龄,性别等。
现在要编程描述学生和老师这两种身份,为了简便只讨论他们的一些属性
 
//学生类
class Student
{
//姓名属性
public string name
{
get;set;
}
public int age
{
get;set;
}
//分数属性,特有的
public double score
{
get;set;
}
}
 
//老师类
class Teacher
{
//姓名属性
public string name
{
get;set;
}
public int age
{
get;set;
}
//薪水属性,特有的
public double salary
{
get;set;
}
}
写完一看,学生类和老师类有代码重复的现象,这种事绝对不能忍。
 
继承(发生在类与类之间的关系)

将共有的属性,将其分离出来,单独写成一个类
//人类
class Person
{
//姓名属性
public string name
{
get;set;
}
//年龄属性
public int age
{
get;set;
}
}
 
现在让Person类分别与Student类,Teacher类发生关系。
//老师类
class Teacher: Person
{
public double salary
{
get;set;
}
}
上述代码,Teacher类的姓名、年龄属性将从Person获得,将这种行为称为继承。
Student继承Person类代码省略。
 
继承中的构造函数

 
//person类
class Person
{
//name属性
public string name
{
get;set;
}
//age属性
public int age
{
get;set;
}
Person(string _name,string _age)
{
this.name = _name;
this.age = _age;
}
}
//Student类继承自Person类
class Student : Person
{
public int score
{
get;set;
}
Person(string _name,string _age, string _score)
{
this.name = _name;
this.age = _age;
this.score = _score;
}
}
上述代码将会报错
 
利用base关键字调用父类构造函数

将student类改成如下形式
class Student : Person
{
public int score
{
get;set;
}
//你用base关键字调用父类中的构造函数
Person(string _name,string _age, string _score) : base(_name, _age)
{
this.score = _score;
}
}
 
继承中的术语

父类:上面的例子中person就是父类。你也可以说是基类
子类:上面的例子中student,teacher就是子类,从person类派生而来。你也可以说是派生类
单根性:继承具有单根性,指一个类只能继承一个类。
传递性:A继承了B,B继承了C,C的属性和方法,在A中也得到继承了。
结束语

 
写这篇随笔的目的是出于锻炼自己的表达能力和思维逻辑能力的,若给你后面的学习带来误解请谅解。
 
感谢博客园
感谢黑马训练营
2014/1/16 晚7点

C#基础|面向对象之继承的更多相关文章

  1. Java基础——面向对象(封装——继承——多态 )

    对象 对象: 是类的实例(实现世界中 真 实存在的一切事物 可以称为对象) 类: 类是对象的抽象描述 步骤: 1.定义一个类 (用于 描述人:) ( * 人:有特征和行为) 2.根据类 创建对象 -- ...

  2. python基础--面向对象之继承

    # 继承是一种创建新类的方式,新建的类可以继承一个,或者多个父类, # 父类又可以称为基类或者超类,新建的类可以称为派生类,子类 class ParentClass1: # 定义父类 1 pass c ...

  3. 第二十七节:Java基础面向对象-静态,单例模式,继承详情知识点

    前言 Java基础面向对象-静态,单例模式,继承详情知识点.静态-static关键字,static变量,静态代码块,代码块(不加静态),对象创建过程,单例模式,继承. 静态-static关键字 // ...

  4. 面向对象多继承(c3算法)、网络基础和编写网络相关的程序

    一.面向对象多继承(c3算法) a.有多个父类先找左,再找右,如下示例: class A(object): pass class B(object): def f1(self): print('B') ...

  5. Java基础-面向对象第二特征之继承(Inheritance)

    Java基础-面向对象第二特征之继承(Inheritance) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.继承的概述 在现实生活中,继承一般指的是子女继承父辈的财产.在程序 ...

  6. Python全栈--9 __import__ 反射和面向对象基础 self 封装 继承(多继承的顺序) 多态

    一.反射 python中的反射功能是由以下四个内置函数提供:hasattr.getattr.setattr.delattr,改四个函数分别用于对对象内部执行:检查是否含有某成员.获取成员.设置成员.删 ...

  7. 【Java基础】【08面向对象_继承&方法&final】

    08.01_面向对象(代码块的概述和分类)(了解)(面试的时候会问,开发不用或者很少用) A:代码块概述 在Java中,使用{}括起来的代码被称为代码块. B:代码块分类 根据其位置和声明的不同,可以 ...

  8. Py修行路 python基础 (十五)面向对象编程 继承 组合 接口和抽象类

    一.前提回忆: 1.类是用来描述某一类的事物,类的对象就是这一类事物中的一个个体.是事物就要有属性,属性分为 1:数据属性:就是变量 2:函数属性:就是函数,在面向对象里通常称为方法 注意:类和对象均 ...

  9. python基础-9__import__ 反射和面向对象基础 self 封装 继承(多继承顺序) 多态

    一 反射 python中的反射功能是由以下四个内置函数提供:hasattr.getattr.setattr.delattr,改四个函数分别用于对对象内部执行:检查是否含有某成员.获取成员.设置成员.删 ...

随机推荐

  1. Disruptor框架

    http://developer.51cto.com/art/201306/399370.htm

  2. Http抓包工具Charlse使用教程

    [原文]http://blog.csdn.net/wildfireli/article/details/19829479 Charles是目前最强大的http调试工具,在界面和功能上远强于Fiddle ...

  3. 关于JFace中的TableViewer和TreeViewer中的

    TableViewer类 构造方法摘要: 方法摘要: 在做的这几个练习中,发现,getTable(),refresh(),remove(),setSelection()方法经常使用. TreeView ...

  4. 今天学习image在html中的应用

    今天学习image在html中的应用 上次在学习超级链接的使用中有一小问题,是在添加网址中href="http://www.baidu.com" 中不能忘记http://,否则链接 ...

  5. JavaScript高级程序设计(第三版)学习笔记20、21、23章

    第20章,JSON JSON(JavaScript Object Notation,JavaScript对象表示法),是JavaScript的一个严格的子集. JSON可表示一下三种类型值: 简单值: ...

  6. JS完美运动框架

    这套框架实现了多物体,任意值,链式运动,多值运动,基本满足常见的需求. /* 功能:完美运动框架,可以实现多物体,任意值,链式运动,多值运动 版本:V1.0 兼容性:Chrome,FF,IE8+ (o ...

  7. h2database源码浅析:SQL语句的执行

    最近想好好了解一下数据库的原理,下载了h2database的源码,准备好好看看.此过程的一些想法,暂且记下来,权当做读码笔记吧! 为了调试准备的测试用例: @Test public void test ...

  8. System.Data.SqlClient.SqlError: 对文件……的目录查找失败[转]

    System.Data.SqlClient.SqlError: 对文件……的目录查找失败,出现操作系统错误 3 的处理办法 在还原SQL SERVER数据库时出现了查找目录失败的原因,困扰了我一个多小 ...

  9. Java parseInt_使用此方法得到的原始数据类型的一个特定的字符串

    Java parseInt解释加方法示例     使用此方法得到的原始数据类型的一个特定的字符串. parseXxx()是一个静态方法,可以有一个参数或两个         java parseInt ...

  10. linux启动报错:kernel panic - not attempted to kill init

    系统类型:CentOS 6.4(x64) 启动提示:Kernel panic - not syncing: Attempted to kill init 解决办法: 系统启动的时候,按下‘e’键进入g ...