C# 继承实现父类方法、重写、重载
继承是派生类(子类)去实现(重写<override>、重构<new>)基类(父类)的方法或属性。从而获取在派生类中要实现的功能。
子类调用父类构造方法,在父类中有个实现姓名和年龄的构造方法但是中子类也要实现这样的功能这时子类不用再次去写这个功能只要去调用父类的功能即可。
public class Person
{
private string _name = null;
private int _age = ;
public Person(string name, int age)//父类的构造方法
{
this._name = name;//获得参数的值
this._age = age;
Console.WriteLine("您的姓名是{0},您的年龄是{1}.",
this._name, this._age);
} }
public class Studnet : Person
{
private int _id;
public Studnet(string name, int age, int IDCard):base(name,age)
//子类构造方法继承父类构造方
//把接受到的name、age两个参数交给父类的构造方法去处理
{
this._id = IDCard;
Console.WriteLine("您的身份证号码为{0}",this._id);
} }
class Program
{
static void Main(string[] args)//主函数
{
Studnet stu = new Studnet("benshou", , );
Console.ReadLine();
}
}
实现效果
您的姓名是benshou,您的年龄是12.
您的身份证号码为99999
在C#中定义了,子类去调用父类的方法时,会先去执行父类的方法之后再去执行子类的方法
还是以子类继承父类,现在是子类实现父类的重写和重载
重写只是对方法里面的功能实现重新做的了编写,并没有对方法的参数进行添加、改变、删除
重载则是对方法参数的个数、位置、参数类型进行了改变。
重写ShowME方法
public class Person
{
public virtual void ShowME(string name,string school,string Class)
{
Console.WriteLine("我在{0}学习",Class);
Console.WriteLine("我叫{0}.我毕业与{1}",name,school);
} }
public class Studnet : Person
{
public override void ShowME(string name,string school, string Class)
//重写了父类的ShowME方法
{
Console.WriteLine("姓名{0}\n毕业学校{1}\n曾读班级{2}",
name,school,Class);
}
}
}
class Program
{
static void Main(string[] args)//主函数
{
Student stu = new Studnet();
stu.ShowME("benshou","浙江金融职业学院","电子商务(7)班");
Console.ReadLine();
}
}
实现效果
姓名benshou
毕业学校浙江金融职业学院
曾读班级电子商务(7)班
重写的父类方法时,必须指明被重写的方法是虚方法(virtual关键字)。在子类重写父类方法时必须有重写关键字(override)这样才能重写父类的方法
重载ShowME方法
public class Person
{
public void ShowME(string name,string school,string Class)
{
Console.WriteLine("我在{0}学习",Class);
Console.WriteLine("我叫{0}.我毕业与{1}",name,school);
}
}
public class Studnet : Person
{
public new void ShowME(string name)
{
Console.WriteLine("姓名{0}",name);
}
}
class Program
{
static void Main(string[] args)//主函数
{
Studnet stu = new Studnet();
stu.ShowME("benshou");
Console.ReadLine();
}
}
实现效果
姓名benshou
子类重载父类方法,子类必须指定重载的关键字(new),而父类被重载的方法则可以不用指定哪个方法被重载的关键字(virtual)。重载一个方法,是对一个方法重新进行了编写从方法的参数到方法体,唯独方法的名称没有进行改变。重载也可以对原来没有返回类型的方法(void),改变为有返回类型的方法。总体来讲,重载处了方法名不能被改变为另外什么都能重新定义(方法作用域、返回类型、方法体、方法参数)
C# 继承实现父类方法、重写、重载的更多相关文章
- Java基础进阶:继承重点摘要,继承详解,方法重写注意事项,方法重载与重写的区别,抽象类,代码块, 附重难点,代码实现源码,课堂笔记,课后扩展及答案
继承重点摘要 *继承的特点: 子类在初始化之前,一定要先完成父类数据的初始化 子类在初始化之前,一定要先访问父类构造,完成父类数据的初始化 系统在每一个构造方法中默认隐藏了一句super(); 如果我 ...
- python 父类方法重写
class Bird: def isWing(self): print("鸟有翅膀") def fly(self): print("鸟会飞") class Os ...
- odoo开发笔记 -- 多个子类继承同一个父类方法的执行顺序
场景描述: odoo模块化开发的架构理念,科学&高效, 可以让很多业务场景,尽可能松耦合:让开发人员的主要精力,关注在当前的业务逻辑: 所谓「前人栽树,后人乘凉」,模块整体好比一棵大树, 开发 ...
- JAVA中继承时方法的重载(overload)与重写/覆写(override)
JAVA继承时方法的重载(overload)与重写/覆写(override) 重载-Override 函数的方法参数个数或类型不一致,称为方法的重载. 从含义上说,只要求参数的个数或参数的类型不一致就 ...
- Objective-c 类的继承 方法重写 方法重载
一.类的继承 Objective-c中类的继承与C++类似,不同的是Objective-c不支持多重继承,一个类只能有一个父类,单继承使Objective-c的继承关系很简单,易于管理程序. Obje ...
- Java 方法重载,方法重写(覆盖),继承等细节注意
1.方法重载(method overload)的具体规范 如果有两个方法的方法名相同,但参数不一致,那么可以说一个方法是另一个方法的重载. 一.方法名一定要相同. 二.方法的参数表必须不同,包括参数的 ...
- java代码-------继承的方法----重写还是重载
总结:是自己不听讲吧,不懂啊 感觉父类的方法,子类可以重载,只要参数个数不同,重载与返回值没有关系 重写绝对是可以的.但答案是只能重写啊 package com.s.x; public class T ...
- 04 Python的继承、方法重写、super()类、父类私密属性的调用
继承 A类继承B类,A即可获得B类的全部公共属性和方法(包括内置属性和方法).格式如:class A(B): class Animal: def sleep(self): print("zZ ...
- [UE4]蓝图继承方法:重写父类方法时,增加父类方法调用
包括构造函数也可以调用父类方法 事件也可以调用父级的事件
随机推荐
- 使用 gulp 构建一个项目
本章将介绍 gulp-watch-path stream-combiner2 gulp-sourcemaps gulp-autoprefixer 您还可以直接学习以下模块: 安装 Node 和 gul ...
- Hibernate + Oracle 创建自增序列ID
1.创建自增序列 2.对ID创建触发器 3.Userinfo.hbm.xml使得<generator class="increment"> 序列: MAXVALUE I ...
- 主元素 II
主元素 II 给定一个整型数组,找到主元素,它在数组中的出现次数严格大于数组元素个数的三分之一. 样例 给出数组[1,2,1,2,1,3,3] 返回 1 注意 数组中只有唯一的主元素 挑战 要求时间复 ...
- oracle return code 2112
SQL-02112 SELECT..INTO returns too many rows Cause: A SELECT...INTO statement returned more rows tha ...
- Learning Spatial Regularization with Image-level Supervisions for Multi-label Image Classification
- c99柔性数组
变长结构体 struct test { int nSize; char data[]; // 或者 char data[0];但建议使用 char data[]; 注意:c98 时不支持柔性数组,其仅 ...
- NOI 二分算法练习
1.NOI 二分法求函数的零点 总时间限制: 1000ms 内存限制: 65536kB 描述 有函数: f(x) = x5 - 15 * x4+ 85 * x3- 225 * x2+ 274 * ...
- FreeMarker输出$
FreeMarker如何输出$(美元符号) 使用${'$'} 如需要输出${user.id} 则${'$'}{user.id}
- CentOS 6.9下iptables通过raw表实现日志输出和调试
说明:iptables调试的最好方式应该是输出日志了.并且iptables有个raw的表,优先级别最好,且调试时针对icmp协议(ping)进行,那么日志输出就是整条链路串起来输出的,非常的清晰. 前 ...
- CentOS 6.9配置网卡IP/网关/DNS命令详细介绍及一些常用网络配置命令(转)
一.IP 即时生效(重启后失效): ifconfig eth0 192.168.1.102 netmask 255.255.255.0 //添加IP地址 route add default gw 19 ...