面向对象的世界

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

在面向对象的世界里,人们用类来模拟现实世界中的各种关系。
从大的范围来说,人属于人类,如果按照不同的身份将人类进行划分,又可以分为老师,医生,律师,学生等等。。。
如果要用编程来描述学生和老师这两种不同的身份
想到学生这种身份会有,学校,班级,成绩等特有的属性,当然还有作为人类共有的一些东西,比如,姓名,年龄,性别等。
作为老师这种身份会有,工资等特有的属性,也有一些和学生共同的东西,比如,姓名,年龄,性别等。
现在要编程描述学生和老师这两种身份,为了简便只讨论他们的一些属性
 
//学生类
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. [Oracle EBS R12]SQL Queries and Multi-Org Architecture in Release 12 (Doc ID 462383.1)

    In this Document   Abstract   History   Details   Previous Releases   Release 12   Multi-Org Session ...

  2. 深入理解计算机系统第二版习题解答CSAPP 2.12

    对于下面的值,写出变量x的C语言表达式.代码应该对任何字长w≥8都能工作.我们给出当x=0x87654321以及w=32时表达式的结果,仅供参考. A.x的最低有效字节,其他位均为0.[0x00000 ...

  3. background不能填充margin的问题

    CSS2 中有5个主要的背景(background)属性,它们是: background-color: 指定填充背景的颜色.background-image: 引用图片作为背景.background- ...

  4. PHP之文件目录基础操作

    我们知道,临时声明的变量是保存在内存中的,即便是静态变量,在脚本运行完毕后也会被释放掉,so,想长久保存一个变量的内容,方法之一就是写到文件中,放到硬盘或服务器上,为此文件操作就必须很熟悉. 1.文件 ...

  5. java反射温习一下

    public class LoveReflect { public static class Demo implements Serializable{ } public static void ma ...

  6. .NET通过调用Office组件导出Word文档

    .NET通过调用Office组件导出Word文档 最近做项目需要实现一个客户端下载word表格的功能,该功能是用户点击"下载表格",服务端将该用户的数据查询出来并生成数据到Word ...

  7. arguments 函数内部属性

    1.arguments 是在function方法里面的,是实参数组,用法是挺多的,下面来记录一下 2.利用arguments实现方法的重载 //01.使用argument模拟方法重载 function ...

  8. GetDeviceCaps() 参数

    GetDeviceCaps 检测设备指定信息 参数: #define DRIVERVERSION 0 /* 设备驱动版本 */ #define TECHNOLOGY 2 /* Device class ...

  9. 重置mysql管理员密码

    重置管理员密码 1.关闭mysql 2.开启mysql,跳过授权表mysql服务 提示:如果此步骤操作成功,那么任何用户登陆MySQL都不需要用户名与密码 保持此窗口不能关闭 3.重新cmd,登陆 m ...

  10. 学习C++ Primer 的个人理解(六)

    第四章和第五章没什么特别的.基本上就是书本上的字面意思,也没什么需要注意的细节.直接记录第六章. 本章介绍了函数,其实也没什么特别的.但有几个重点 1.形参的类型决定了形参和实参的交互方式.形参是引用 ...