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是面向对象的编程语言,面向过程是通过函数体现,面向过程主要是功能行为. 而对于面向对象而言,将功能封装到对象,所以面向对象是基 ...
随机推荐
- spring的IOC和AOP详细讲解
1.解释spring的ioc? 几种注入依赖的方式?spring的优点? IOC你就认为他是一个生产和管理bean的容器就行了,原来需要在调用类中new的东西,现在都是有这个IOC容器进行产生,同时, ...
- HDU 5416——CRB and Tree——————【DFS搜树】
CRB and Tree Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Tota ...
- oracle简单命令
1.cmd 中 sqlplus /nolog 2.SQL> conn sys/password as sysdba
- Unity C# string 与byte 直接的转换
指纹模版的转换 可还原字节数组byt string str = Convert.ToBase64String(bytes); byte[] bytes = Convert.FromBase64Stri ...
- 利用COM组件实现对WORD书签处写入值
using System; using System.Collections.Generic; using System.Text; using Microsoft.Office.Interop.Wo ...
- 设计模式之工厂模式详细读后感TT!(五)
一如既往:原文 工厂方法(factory method)模式的意义是定义一个创建产品对象的工厂接口, 将实际创建工作推迟到子类当中. 核心工厂的创建, 这样核心类成为一个抽象工厂角色, 仅仅复制工厂子 ...
- Dojo 学习笔记 之 Dojo hitch&partial
原文: http://dojotoolkit.org/documentation/tutorials/1.10/hitch/index.html 版本: Dojo 1.10 为了更好地使用JavaSc ...
- Android Studio Git 分支实践
新公司有些项目是用的 Git,以前公司都是 svn,为了练手 Git,我个人 APP 用到了,但是仅简单的 git pull/push 的使用,并未用到 Git 精髓,只有当项目中用到,才会紧迫去全面 ...
- rollback
savepoint test; rollback to savepoint test;
- Linux终端(terminal)清屏命令
windows CMD终端的清屏命令是cls Linux终端中的清屏命令有 1) clear 2) reset