C#面向对象10 继承
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 继承相关推荐
- Java(10)面向对象之继承,内部类
01 面向对象之继承 public class Inheritance02 {public class Person {/*** 昵称*/private String nickname;/*** 性别 ...
- python中继承和组合的区别_Py修行路 python基础 (十五)面向对象编程 继承 组合 接口和抽象类...
一.前提回忆: 1.类是用来描述某一类的事物,类的对象就是这一类事物中的一个个体.是事物就要有属性,属性分为 1:数据属性:就是变量 2:函数属性:就是函数,在面向对象里通常称为方法 注意:类和对象均 ...
- Python面向对象简单继承
Python面向对象简单继承 python是面向对象的语言,它支持继承,即一个类可以继承父类那里属性和方法.本书代码源自<<Python 3 Object-Oriented Program ...
- 子类重载父类函数_Python面向对象之继承、重写与重载
回顾 在Python进阶记录之基础篇(十六)中,我们介绍了Python面向对象中对属性的访问限制,需要重点掌握私有变量和公有变量的区别和用法,牢记面向对象的编程规则.今天我们讲一下Python面向对象 ...
- python继承语法_python语法学习面向对象之继承
python语法学习面向对象之继承 只要涉及到面向对象,"类"是必须出现的一个代名词. 类和对象是面向对象编程的两个主要方面.类创建一个新类型,而对象是这个类的实例. 类的一些概念 ...
- 我在千峰培训的日子第十二–十三天------面向对象【继承】
我在千峰培训的日子第十二–十三天------面向对象[继承] 今日感悟 人生最遗憾的莫过于放弃了不该放弃的,固执的坚持了不该坚持的. 老师知识点 一.局部变量跟成员变量 形参和实参 形参:定义在方法中 ...
- Java面向对象之继承和多态
1.代码块 (1)关于代码块的概述:用{}括起来的代码,统称为代码; (2) 根据其位置以及声明不同:分为以下 1) 局部代码块: 在main()里面,给变量限定它的生命周期 public ...
- 面向对象、继承、抽象方法重载知识点整理
面向过程.面向对象 面向过程:从开始到结束自己独立完成 面向对象:将一个事物划分为单体来各自实现区域性的功能,最后通过调用组合完成 类.对象 类:某一些具有共同特征的物体 对象:指某一种具体的物体,属 ...
- 类设计者的工具(四):面向对象程序设计 (继承)
本文为<C++ Primer>的读书笔记 目录 继承 基类 虚函数 动态绑定 (dynamic binding) 派生类 类派生列表 派生类的声明 继承的基类必须已经定义 继承基类中的虚函 ...
最新文章
- CSS3 background-size图片自适应
- System.Windows.Forms.ListView : Control
- 数据库查询近七天的数据
- java如何捕获多个异常_是否可以在单个catch块中捕获多个Java异常?
- 前端学习(2989):vue+element今日头条管理--项目结束
- 阿里云云效何勉:云原生是“精益实践”的最佳助力
- flash位图技术研究篇(8):扫描像素点
- 先进数据系统实验室(Advanced Data Systems Laboratory, ADSL)
- 23. stdin, stdout, stderr
- pandas_空值填充|重复数据|异常数据
- R语言与抽样技术学习笔记(Randomize)
- 利用vtk实现管状模型沿中心线切割平面
- windows电脑常见问题故障解决办法
- java pdfbox2 中文乱码_Java用pdfbox或icepdf转换PDF为图片时,中文乱码问题
- Glide超时重试机制实现
- 基于51单片机空气环境粉尘检测PM2.5 风扇控制系统设计
- 深度解析:创交会高度成果转化背后的秘密
- 史上最简单的excel表格xlsx文档解密方法,excel表格xlsx不能复制打印怎么办?
- 基于51单片机带显示器的音乐盒设计
- python学习思维导图笔记(第二天)