继承

新建一个基类

对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#基础-面向对象-继承的更多相关文章

  1. 07JAVA基础面向对象-继承/多态

    一.继承 1.概念 子类的共性 重用现有类并在此基础上进行扩展 public class 子类 extends 父类{} 2.继承中的成员访问 成员变量 成员方法 局部->本类中成员变量-> ...

  2. 第二十七节:Java基础面向对象-静态,单例模式,继承详情知识点

    前言 Java基础面向对象-静态,单例模式,继承详情知识点.静态-static关键字,static变量,静态代码块,代码块(不加静态),对象创建过程,单例模式,继承. 静态-static关键字 // ...

  3. Java基础-面向对象第二特征之继承(Inheritance)

    Java基础-面向对象第二特征之继承(Inheritance) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.继承的概述 在现实生活中,继承一般指的是子女继承父辈的财产.在程序 ...

  4. C#基础-----面向对象

    C#基础-----面向对象(一) 分类: C#基础2015-06-08 14:10 2人阅读 评论(0) 收藏 举报 1,面向对象 什么是面向对象?一个分析问题的方式(增强了程序的可扩展性) 几个名词 ...

  5. python基础——面向对象编程

    python基础——面向对象编程 面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的 ...

  6. python基础——面向对象进阶下

    python基础--面向对象进阶下 1 __setitem__,__getitem,__delitem__ 把对象操作属性模拟成字典的格式 想对比__getattr__(), __setattr__( ...

  7. python基础——面向对象进阶

    python基础--面向对象进阶 1.isinstance(obj,cls)和issubclass(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls 的对象 ...

  8. python基础——面向对象的程序设计

    python基础--面向对象的程序设计 1 什么是面向对象的程序设计 面向过程的程序设计的核心是过程,过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. 优 ...

  9. 第二十五节:Java语言基础-面向对象基础

    面向对象 面向过程的代表主要是C语言,面向对象是相对面向过程而言,Java是面向对象的编程语言,面向过程是通过函数体现,面向过程主要是功能行为. 而对于面向对象而言,将功能封装到对象,所以面向对象是基 ...

随机推荐

  1. 保护REST API/Web服务的最佳实践

    在设计REST API或服务时,是否存在处理安全性(身份验证,授权,身份管理)的最佳实践? 在构建SOAP API时,您可以使用WS-Security作为指导,有关该主题的文献很多.我发现了有关保护R ...

  2. 初步学习XML的基本代码

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  3. Spring Boot 2.x 自定义metrics 并导出到influxdb

    Step 1.添加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactI ...

  4. Spring课程 Spring入门篇 2-2 Spring注入方式

    课程链接: 本节主要讲了以下两块内容: 1 xml两种注入方式 2 注入方式代码实现 3 特别注意 1 xml两种注入方式 构造注入和set注入 2 注入方式代码实现 2.1 set注入方式的实现 实 ...

  5. Linux 两组信号对比

    博客逐步迁移到,独立博客,原文地址 http://www.woniubi.cn/two_groups_signal_difference/ 之前看信号的时候,没有太注意不同信号的对比.今天再次看到的时 ...

  6. jq 操作select

    添加option $("#ID option").each(function(){if($(this).val()==111){$(this).remove();}}); 移除op ...

  7. 洛谷 P1509 找啊找啊找GF

    题目背景 "找啊找啊找GF,找到一个好GF,吃顿饭啊拉拉手,你是我的好GF.再见." "诶,别再见啊..." 七夕...七夕...七夕这个日子,对于sqybi这 ...

  8. server 2008 64位安装Rational错误

    Administrator has detected that this is a terminal server session.Administrator does not support run ...

  9. springboot实现邮件发送

    1.创建springboot项目. 2.创建好的项目如图: 在static目录下新建index.html. 3.点击启动项目 在浏览器的地址栏中访问:http://localhost:8080/ 访问 ...

  10. Selenium入门8 js调用

    execute_script 可以执行js和jquery脚本 示例如下:修改百度首页的按钮字体颜色,按钮隐藏,按钮显示 #coding=utf-8 # 调用js jquery from seleniu ...