1.继承:

****

我们可能会在一些类中,写一些重复的成员。我们可以将这些重复的成员,单独的封装到一个类中,作为这些类的父类。

Student,Teacher,Driver ----子类  派生类

Person                          ----父类  基类

子类继承于父类:

****

子类继承了父类,那么子类从父类那里继承过来了什么?

首先,子类继承了父类的属性和方法,但是子类并没有继承父类的私有字段。

问题:子类有没有继承父类的构造函数?

答:子类并没有继承父类的构造函数,但是,子类会默认的调用父类无参数的构造函数,创建父类对象,让子类可以使用父类中的成员。

所以,如果在父类中重新写了一个有参数的构造函数之后,那个无参数的就被干掉了,子类就调用不到了,所以子类会报错。

解决方法:

1)在类中重新写一个无参数的构造函数。

2)在子类中显示的调用父类的构造函数,使用关键字:base()

2.继承的特性:

1)继承的单根性:一个子类只能有一个父类!

2)继承的传递性:祖宗的迟早是我的!

3.查看类图

例子代码:

Person类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace ConsoleApplication3
{public class Person{public Person(string name,int age,char gender){this.Name = name;this.Age = age;this.Gender = gender;}private string _name;public string Name{get { return _name; }set { _name = value; }}private int _age;public int Age{get { return _age; }set { _age = value; }}private char _gender;public char Gender{get { return _gender; }set { _gender = value; }}public void CHLSS(){Console.WriteLine("吃喝拉撒睡!");}}
}

Student类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace ConsoleApplication3
{public class Student : Person{public Student(string name, int age, char gender, int id): base(name, age, gender){this.Id = id;}private int _id;public int Id{get { return _id; }set { _id = value; }}public void Study(){Console.WriteLine("Study!");}}
}

Teacher类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace ConsoleApplication3
{public class Teacher : Person{public Teacher(string name, int age, char gender, decimal salary): base(name, age, gender){this.Salary = salary;}private decimal _salary;public decimal Salary{get { return _salary; }set { _salary = value; }}public void Teach(){Console.WriteLine("Teach!");}}
}

Driver类:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace ConsoleApplication3
{public class Driver : Student{public Driver(string name, int age, char gender, int id, int drivertime): base(name, age, gender, id){this.DriverTime = drivertime;}private int _driverTime;public int DriverTime{get { return _driverTime; }set { _driverTime = value; }}public void Drive(){Console.WriteLine("Drive!");}}
}

4.object是所有类的基类。

5.new 关键字

1)创建对象

2)隐藏从父类中继承的同名成员。隐藏的后果就是子类无法调用父类的成员。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace ConsoleApplication3
{public class Person{public Person(string name,int age,char gender){this.Name = name;this.Age = age;this.Gender = gender;}private string _name;public string Name{get { return _name; }set { _name = value; }}private int _age;public int Age{get { return _age; }set { _age = value; }}private char _gender;public char Gender{get { return _gender; }set { _gender = value; }}public void CHLSS(){Console.WriteLine("吃喝拉撒睡!");}/// <summary>/// 测试SayHello方法/// </summary>public void SayHello(){Console.WriteLine("Hello!");}}
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace ConsoleApplication3
{public class Student : Person{public Student(string name, int age, char gender, int id): base(name, age, gender){this.Id = id;}private int _id;public int Id{get { return _id; }set { _id = value; }}public void Study(){Console.WriteLine("Study!");}/// <summary>/// new 关键字隐藏父类中的方法SayHello/// </summary>public new void SayHello(){Console.WriteLine("Hello,Student!");}}
}

6.MindeMap

转载于:https://www.cnblogs.com/youguess/p/8458012.html

C#面向对象10 继承相关推荐

  1. Java(10)面向对象之继承,内部类

    01 面向对象之继承 public class Inheritance02 {public class Person {/*** 昵称*/private String nickname;/*** 性别 ...

  2. python中继承和组合的区别_Py修行路 python基础 (十五)面向对象编程 继承 组合 接口和抽象类...

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

  3. Python面向对象简单继承

    Python面向对象简单继承 python是面向对象的语言,它支持继承,即一个类可以继承父类那里属性和方法.本书代码源自<<Python 3 Object-Oriented Program ...

  4. 子类重载父类函数_Python面向对象之继承、重写与重载

    回顾 在Python进阶记录之基础篇(十六)中,我们介绍了Python面向对象中对属性的访问限制,需要重点掌握私有变量和公有变量的区别和用法,牢记面向对象的编程规则.今天我们讲一下Python面向对象 ...

  5. python继承语法_python语法学习面向对象之继承

    python语法学习面向对象之继承 只要涉及到面向对象,"类"是必须出现的一个代名词. 类和对象是面向对象编程的两个主要方面.类创建一个新类型,而对象是这个类的实例. 类的一些概念 ...

  6. 我在千峰培训的日子第十二–十三天------面向对象【继承】

    我在千峰培训的日子第十二–十三天------面向对象[继承] 今日感悟 人生最遗憾的莫过于放弃了不该放弃的,固执的坚持了不该坚持的. 老师知识点 一.局部变量跟成员变量 形参和实参 形参:定义在方法中 ...

  7. Java面向对象之继承和多态

    1.代码块 (1)关于代码块的概述:用{}括起来的代码,统称为代码; (2) 根据其位置以及声明不同:分为以下       1) 局部代码块: 在main()里面,给变量限定它的生命周期 public ...

  8. 面向对象、继承、抽象方法重载知识点整理

    面向过程.面向对象 面向过程:从开始到结束自己独立完成 面向对象:将一个事物划分为单体来各自实现区域性的功能,最后通过调用组合完成 类.对象 类:某一些具有共同特征的物体 对象:指某一种具体的物体,属 ...

  9. 类设计者的工具(四):面向对象程序设计 (继承)

    本文为<C++ Primer>的读书笔记 目录 继承 基类 虚函数 动态绑定 (dynamic binding) 派生类 类派生列表 派生类的声明 继承的基类必须已经定义 继承基类中的虚函 ...

最新文章

  1. CSS3 background-size图片自适应
  2. System.Windows.Forms.ListView : Control
  3. 数据库查询近七天的数据
  4. java如何捕获多个异常_是否可以在单个catch块中捕获多个Java异常?
  5. 前端学习(2989):vue+element今日头条管理--项目结束
  6. 阿里云云效何勉:云原生是“精益实践”的最佳助力
  7. flash位图技术研究篇(8):扫描像素点
  8. 先进数据系统实验室(Advanced Data Systems Laboratory, ADSL)
  9. 23. stdin, stdout, stderr
  10. pandas_空值填充|重复数据|异常数据
  11. R语言与抽样技术学习笔记(Randomize)
  12. 利用vtk实现管状模型沿中心线切割平面
  13. windows电脑常见问题故障解决办法
  14. java pdfbox2 中文乱码_Java用pdfbox或icepdf转换PDF为图片时,中文乱码问题
  15. Glide超时重试机制实现
  16. 基于51单片机空气环境粉尘检测PM2.5 风扇控制系统设计
  17. 深度解析:创交会高度成果转化背后的秘密
  18. 史上最简单的excel表格xlsx文档解密方法,excel表格xlsx不能复制打印怎么办?
  19. 基于51单片机带显示器的音乐盒设计
  20. python学习思维导图笔记(第二天)

热门文章

  1. 过期域名如何助力犯罪分子攻破企业防御
  2. 家庭路由器哪家强:固件漏洞多年不修复,更新无济于事
  3. 倾斜摄影测量无人机炸机的八大原因及“炸机”预防措施
  4. MySQL备份,恢复方案,mysqlbinlog,mysqldump,主从,主主复制
  5. thinkphp 手机号和用户名同时登录
  6. ABP框架 - 多租户
  7. Understanding the Bias-Variance Tradeoff
  8. 利用位运算实现加减乘除
  9. Quartz的集群模式和单机模式共存-让一个非集群的Quartz与集群节点并行着运行
  10. target-action设计模式--主要为Button的方法重写