C#基础-面向对象-继承
继承
新建一个基类
对Person类3个字段进行重构->封装字段


效果如下:
public string Name { get => name; set => name = value; }
public string Sex { get => sex; set => sex = value; }
public int Age { get => age; set => age = value; }
完整Person类代码
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApp6
{
// 作为被继承的,称为基类,也称为父类
public class Person
{
private string name;
private string sex;
private int age;
public Person()
{
}
public Person(string _name, string _sex, int _age)
{
this.name = _name;
this.sex = _sex;
this.age = _age;
}
public string Name { get => name; set => name = value; }
public string Sex { get => sex; set => sex = value; }
public int Age {
get { return age; }
set {
if (value <= 0)
{
age = 12;
}
else
{
age = value;
}
}
}
}
}
新建一个Doctor类,继承Person
继承的称为子类,或派生类,从person中继承了非private的属性
// 称为派生类,也称为子类,继承Person
public class Doctor:Person
{
}
主函数调用Doctor属性
class Program
{
static void Main(string[] args)
{
Doctor d = new Doctor();
d.Name = "James";
d.Sex = "Male";
d.Age = 23;
Console.WriteLine("医生姓名:{0},性别:{1},年龄:{2}。", d.Name, d.Sex, d.Age);
}
}
子类的构造函数继承父类,并在父类基础上有所增加
// 称为派生类,也称为子类,继承Person
public class Doctor:Person
{
private string departName;
//base 表示调用父类
public Doctor(string _name,string _sex,int _age,string _departName) : base(_name, _sex, _age) // 调用父类的构造函数
{
this.DepartName = _departName;
}
public string DepartName { get => departName; set => departName = value; }
}
主函数实现效果:
static void Main(string[] args)
{
Doctor d = new Doctor("jake","male",24,"外科");
Console.WriteLine("医生姓名:{0},性别:{1},年龄:{2},科室:{3}。", d.Name, d.Sex, d.Age, d.DepartName);
}
new与override
子类覆盖父类的方法,使用new关键字
public class Person
{
public void ShowInfo()
{
Console.WriteLine("Person类的ShowInfo方法");
}
}
子类覆盖父类的方法,使用new关键字
// 称为派生类,也称为子类,继承Person
public class Doctor:Person
{
// 子类覆盖父类的方法,使用new关键字
public new void ShowInfo()
{
Console.WriteLine("Doctor类的ShowInfo方法");
}
}
override 是针对父类中已经定义好的虚方法(virtual),可以重写
public class Person
{
public virtual void ShowInfo()
{
Console.WriteLine("Person类的虚方法");
}
}
override 是针对父类中已经定义好的虚方法(virtual),可以重写
// 称为派生类,也称为子类,继承Person
public class Doctor:Person
{
// override 是针对父类中已经定义好的虚方法(virtual),可以重写
public override void ShowInfo()
{
base.ShowInfo();
}
}
C#基础-面向对象-继承的更多相关文章
- 07JAVA基础面向对象-继承/多态
一.继承 1.概念 子类的共性 重用现有类并在此基础上进行扩展 public class 子类 extends 父类{} 2.继承中的成员访问 成员变量 成员方法 局部->本类中成员变量-> ...
- 第二十七节:Java基础面向对象-静态,单例模式,继承详情知识点
前言 Java基础面向对象-静态,单例模式,继承详情知识点.静态-static关键字,static变量,静态代码块,代码块(不加静态),对象创建过程,单例模式,继承. 静态-static关键字 // ...
- Java基础-面向对象第二特征之继承(Inheritance)
Java基础-面向对象第二特征之继承(Inheritance) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.继承的概述 在现实生活中,继承一般指的是子女继承父辈的财产.在程序 ...
- C#基础-----面向对象
C#基础-----面向对象(一) 分类: C#基础2015-06-08 14:10 2人阅读 评论(0) 收藏 举报 1,面向对象 什么是面向对象?一个分析问题的方式(增强了程序的可扩展性) 几个名词 ...
- python基础——面向对象编程
python基础——面向对象编程 面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的 ...
- python基础——面向对象进阶下
python基础--面向对象进阶下 1 __setitem__,__getitem,__delitem__ 把对象操作属性模拟成字典的格式 想对比__getattr__(), __setattr__( ...
- python基础——面向对象进阶
python基础--面向对象进阶 1.isinstance(obj,cls)和issubclass(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls 的对象 ...
- python基础——面向对象的程序设计
python基础--面向对象的程序设计 1 什么是面向对象的程序设计 面向过程的程序设计的核心是过程,过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. 优 ...
- 第二十五节:Java语言基础-面向对象基础
面向对象 面向过程的代表主要是C语言,面向对象是相对面向过程而言,Java是面向对象的编程语言,面向过程是通过函数体现,面向过程主要是功能行为. 而对于面向对象而言,将功能封装到对象,所以面向对象是基 ...
随机推荐
- 微信小程序 列表渲染 wx:for
wx:for控制属性绑定一个数组,即可使用数组中各项的数据重复渲染该组件. wx:for-item指定数组当前元素,或当前项的变量名wx:for-index 指定数组当前下标的变量名 <view ...
- npm EPERM: operation not permitted, rename解决
此问题并非权限问题! 执行如下3条命令解决: 1.清理npm缓存 npm cache clean --force 2.升级npm版本 npm install -g npm@latest --force ...
- 在CentOS上配置Tomcat服务脚本
#!/bin/bash # chkconfig: - 85 15 # description: Tomcat Server basic start/shutdown script # processn ...
- vue打包后CSS中引用的背景图片不显示问题
vue项目中,在css样式中引用了一张背景图片,开发环境下是可以正常显示,build之后背景图片不显示. 解决方法: 找到build/utils.js文件 修改成为如下所示内容: 添加红框中的内容即 ...
- The tenth day
Why the long face? 你为什么不高兴,你为什么扳着脸,愁眉苦脸. Why the long face? Are you feeling down again? 你脸怎么这么臭,你又心情 ...
- Java -GUI开发九九乘法表
Java GUI开发九九乘法表 (1)实现目标: 利用java自带的awt包,基础控件开发一个九九乘法表,点击可以显示对应的乘法口诀. (2)控件选择: 点击——Button 显示——TextFiel ...
- yum第三方源
EPEL RHEL 6: http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm RHEL 7: http:// ...
- Vim中根据正则对选中文本对齐(比如ini文件的=号对齐)
vimrc增加如下内容即可: vnoremap <M-=> :call Duiqi('\v(^\s*\S+)\s+(.*)')<CR> "reg匹配的第2段文字对齐 ...
- 运行npm update等命令出错后如何分析问题根源
我今天工作时,在当前前端项目工作目录下执行命令npm update 结果遇到如下错误:registry error parsing json npm ERR! Unexpected token < ...
- Javascript作业—数字转化为大写
开始学javascript,写作业. <script type="text/javascript"> function toChinese(money){ var ch ...