C#基础8:类的继承
PS:注释和讲解全在代码中
1. 类的继承
C#继承特点
- C#派生类只能继承一个父类,可以通过接口来实现多重继承
- 继承是可以传递的,例如C从B派生,B又从A派生,那么C不仅继承了B中声明的成员,同样也继承了A中声明的成员
- 派生类是对基类的扩展,派生类可以添加新的成员,但不能移除已经继承的成员的定义
- 构造方法和析构方法不能被继承(不能继承,不过可以访问),除此之外其他成员能会被继承(当然更可以访问)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace C4_程序设计
{class Point //点类{public int x, y;public Point() { x = y = -1; } //手写一个默认构造(重载方法)//构造方法99%的情况下都是public,基本上只在单例模式下才使用private修饰public Point(int x, int y){this.x = x;this.y = y;}void Move(int dx, int dy){x += dx;y += dy;}public void Print(){Console.WriteLine("当前调用父类方法:点的坐标为{0},{1}", x, y);}}class State: Point //和C++不一样,C#不支持多继承,也就是说一个类只能有最多一个父亲{public int col;//public new int x;/*如果这里对父类的x进行隐藏,重新定义一个新的x,也就是声明public new int x;那么输出结果将会变为当前调用父类方法:点的坐标为5,6当前调用子类方法:点的坐标为0,-1,点的颜色为0,价值为0当前调用父类方法:点的坐标为-1,-1当前调用父类方法:点的坐标为-1,-1当前调用父类方法:点的坐标为-1,-1*/private double val;public State() { }public State(int x, int y, int col, double val): base(x, y) //调用父类的构造方法,如果没有调用,则默认为调用父类默认构造方法{this.col = col;this.val = val;this.x = x;}public double Val{get{return val;}set{if (value >= 100 || value <= 0)val = -1;elseval = value;}}/*public void Print() //错误,该方法在父类中已经出现,必须使用关键字new进行隐藏{Console.WriteLine("当前调用子类方法:点的坐标为{0},{1},点的颜色为{2},价值为{3}", x, y, col, val);}*/public new void Print(){Console.WriteLine("当前调用子类方法:点的坐标为{0},{1},点的颜色为{2},价值为{3}", x, y, col, val);}}class 类与继承{static void Main(){Point temp, fa = new Point(5, 6);State son = new State();fa.Print(); //当前调用父类方法:点的坐标为5,6son.Print(); //当前调用子类方法:点的坐标为-1,-1,点的颜色为0,价值为0((Point)son).Print(); //当前调用父类方法:点的坐标为-1,-1temp = son;temp.Print(); //当前调用父类方法:点的坐标为-1,-1son.x = -155;temp.Print(); //当前调用父类方法:点的坐标为-155,-1//为什么修改son会影响temp呢?这里别忘了之前有提到过的,C#和C++的不同,temp和son指向的是同一堆空间//其实不建议这么做//son = temp;//son = (State)fa; //这两个语句都错误,不允许将父类对象转换为子类对象son = (State)temp; //正确,因为这个父类对象里面实际上装的是子类对象,所以可以转回子类对象,遵循里氏转换原则}}
}
程序类视图:
C#基础8:类的继承相关推荐
- java 什么是类的继承_Java基础,类的继承,粗略的理解希望对大家有所帮助!
Java基础:继承 读者老爷们大家好,今天图图带大家了解一下java基础里的继承. 首先确定一下我们今天的学习的三个目标.第一个是类的继承:第二个是访问控制权限:第三个方法重写(覆盖)override ...
- Python基础,类的继承,类的多态继承等
# day 4 # 类中成员变量描述对象的属性值根据对象不同,会产生区别,称此类变量为实例变量 # 类中成员变量描述对象的属性值根据对象不同,会产生区别,称此类变量为类变量# # class QieZ ...
- Java基础 -- 复用类(组合和继承)
复用类有两种实现方式. 在新的类中产生现有类的对象,由于新的类是由现有类的对象所组成,所以这种方法称之为组合. 采用继承实现. 一 组合语法 下面创建两个类WaterSource和Sprinkler ...
- 类的继承(三种继承方式)
我只是挑着我不太会的地方整理,可能比较基础. 类的继承主要分为三类,公有继承,私有继承,保护继承. 然后主要记录一下不同的继承方法对派生类的不同作用. 1,派生类私有继承于基类. 这个时候,派生类继承 ...
- 27、Python 面向对象(创建类、创建实例对象、访问属性、内置类属性、对象销毁、类的继承、方法重写、基础重载方法、运算符重载、类属性与方法、下划线双下划线)
27Python面向对象(Python2) Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对象是很容易的.本章节我们将详细介绍Python的面向对象编程. ...
- java类继承语法_java类的继承(基础)
---恢复内容开始--- 这篇随笔和大家讲讲java中类的继承是什么?希望对你们有所帮助. 目录 一.java继承是什么? 二.为什么使用java继承 三.java继承的实现 1.1 java继承的 ...
- python 类和对象_Python零基础入门学习33:类与面向对象编程:类的继承
注:本文所有代码均经过Python 3.7实际运行检验,保证其严谨性. 本文字数约1300,阅读时间约为3分钟. Python面向对象编程 类的继承机制 如果一个类A继承自另一个类B,就把继承者类A称 ...
- c++基础知识点(6)类的继承,构造,析构顺序,虚继承等
学习继承之前,我们先回顾下protected(保护)成员 protected 成员的特点与作用: -对建立其所在类对象的模块来说,它与private成员的性质相同 -对于其派生类来说,它与public ...
- 【Python基础知识库】Python类的继承
继承是一种创建新类的方式,新创建的类加子类,继承的叫父类.超类.基类.继承是类与类之间的关系,继承的作用是减少代码冗余.提高重用性. 继承的特征:所有的类都继承自object类,即所有的类都是obje ...
- java类的继承(基础)
---恢复内容开始--- 这篇随笔和大家讲讲java中类的继承是什么?希望对你们有所帮助. 目录 一.java继承是什么? 二.为什么使用java继承 三.java继承的实现 1.1 java继承的 ...
最新文章
- Proxmox系列:简单实现虚拟机迁移
- 7、linux网络编程--广播
- 汇编中的REPZ CMPSB
- android 阴影背景显示文字_公众号排版如何做出“果冻”文字效果?
- 一直出现 Enter passphrase for key '/root/.ssh/gitkey12.pub'
- 上传文件和提交textfield_0基础掌握Django框架(37)文件上传
- Golang并发:再也不愁选channel还是选锁
- 目标检测——标注文件的格式设计
- 串口通信中ReadFile和WriteFile的超时详解!
- hibernate中session 与JDBC中 connection分析
- app自动化之混合应用的测试(h5,小程序)
- [已解决]360极速浏览器.为什么后台一直占用20%的cpu?
- matlab虚拟变量,不要再稀里糊涂的做回归了:如何设置哑变量
- matplotlib绘制随机漫步
- 第十三届蓝桥杯大赛软件赛省赛(Java 大学C组)
- Hyper 虚拟机删掉,如何恢复
- pure-specifier on function-definition
- qlv文件怎么打开 怎么把qlv文件转换成MP4的文件呢
- STM32进入Standby模式并唤醒
- 七夕有哪些送女朋友的小众又高级的礼物?小众又高级的礼物推荐
热门文章
- python怎么读取excel-python如何读写excel文件
- python有哪些用途-Python有哪些用途
- python从入门到放弃表情图-Python 从入门到放弃(一)
- micropython和python区别-MicroPython与Python速度对比
- 如何系统的自学python-怎样才能彻底系统的自学python?!白Python菜鸟教程
- python项目开发实例-有趣的十个Python实战项目,让你瞬间爱上Python!
- 高通宣称其语音识别系统准确率高达95%
- 语音识别软件、语音识别平台和语音识别技术
- “语音识别”+“视觉识别” - AI将引爆智能硬件市场 科技大佬们是这么认为的?...
- 人工智能被拒绝,语音识别做不到给电视直播加字幕?