面向对象的世界

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

在面向对象的世界里,人们用类来模拟现实世界中的各种关系。
从大的范围来说,人属于人类,如果按照不同的身份将人类进行划分,又可以分为老师,医生,律师,学生等等。。。
如果要用编程来描述学生和老师这两种不同的身份
想到学生这种身份会有,学校,班级,成绩等特有的属性,当然还有作为人类共有的一些东西,比如,姓名,年龄,性别等。
作为老师这种身份会有,工资等特有的属性,也有一些和学生共同的东西,比如,姓名,年龄,性别等。
现在要编程描述学生和老师这两种身份,为了简便只讨论他们的一些属性
 
//学生类
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. 关于iOS自定义返回按钮右滑返回手势失效的解决:

    在viewDidLoad方法里面添加下面这一句代码即可 self.navigationController.interactivePopGestureRecognizer.delegate=(id)s ...

  2. Linux Shell产生16进制随机数

    n为字符长度 openssl rand -hex n

  3. 关于快速排序的Java代码实现

    快速排序(Quicksort)是对冒泡排序的一种改进.它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别 ...

  4. socket编程发送GET请求

    可以根据几根url地址,分析出主机,地址,协议等,然后用封装成的类拼接成GET请求信息,用fsockopen连接主机,进行读取操作,获取响应信息,打印 <?php //http连接接口 inte ...

  5. Sqlserver基于流程控制

    流程控制语句只能在单个批处理段,用户自定义函数和存储过程中使用不能夸多个批处理或者用户自定义函数或者存储过程 批处理:一个或者多个语句组成的一个批处理,是因为所有语句一次性地被提交到一个sql实例,如 ...

  6. Swf Decrypt详解

    http://www.2cto.com/Article/201507/414477.html 攻击在持续,攻击的技术在演进.防御者需要持续的跟进研究和投入.最近Flash 0day频繁出现,将我们更多 ...

  7. Jquery on 事件

    $(document).on("click", 'a.AAA', function(){ var flag=$(this).attr('flag'); alert(flag); } ...

  8. Express安装与调试

    Express 是基于Node.Js平台,快速.开放.极简的 web 开发框架. 1.安装 Express的安装通过cmd来进行,过程如下: 首先,先在本地建立一个项目文件夹,取名Nodejs. 然后 ...

  9. vue防止闪烁

    v-text也可以 转意的话使用v-html <style> [v-clock]{ display:none } <style> <span>{{msg}}< ...

  10. android体系架构

    android体系架构总结: android体系架构分为四层 第一层:应用层:applications 第二层:开发层 第三层: