重载、重写---C#
来源:互联网 发布:王宝强 日本 知乎 编辑:程序博客网 时间:2024/04/30 09:35
首先,知道什么是方法?
- 方法是由 方法签名 和一系列语句的代码块 组成。
- 方法签名包括方法的访问级别(如:public 或private)、可修饰符(如:static 或者abstract或者virtual。。)、方法名称和参数。
方法分类
1).静态方法:
被static关键字修饰的方法,成为静态方法,此时的静态方法属于类级别,不能通过类的实例进行访问,只能通过方法所在的类名字点出来这个静态方法名字。下面的代码演示静态方法的定义和调用:
2).实例方法:
相反,实例方法就是方法前面不加关键字static,直接通过new运算符,实例化一个对象后,通过创建的对象来点出来,实例方法;而且,它是不能通过类名字点出来实例方法的。
下面的代码演示实例方法的定义和调用:
重载
- 指的是方法的方法名相同,但是参数列表(参数的类型,参数的个数,参数顺序)不一样,这些方法互称为方法的重载
重载是平行的。是一个类的内部的方法名称一样,参数列表不一样的多个方法,以实现不同的需求(相同的功能)。
下面的代码演示方法重载得到的一些方法:
是重载的如下:
重写
- 重写是垂直的。是子类(派生类)对父类(基类)同名方法的重新实现。
- 由于父类的方法不能够完成某种功能,但是还必须得调用这个方法,则子类可以重写父类中的这个方法,加强其功能。
在父类里面,如果一个方法可以让子类重写,必须在方法的返回类型前面用virtual、abstract、voerride(继承了父类的虚方法)关键字来修饰。说明这个方法可以被子类重写。
下面的代码演示方法重写得到的一些方法:
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace _001基础{ class Program { static void Main(string[] args) { Animal horse = new Horse(); horse.Voice(); Animal sheep = new Sheep(); //相同类型的对象调用相同的方法表现出不同的行为 sheep.Voice(); Console.ReadKey(); } } //动物父类 public class Animal { //几乎所有的动物都具有发出声音的能力 //但是对于动物的子类来说,每个子类发出的声音都是不一样的 public virtual void Voice() { Console.WriteLine("动物开始发出声音了"); } } //马(子类),子类应该重写父类中的方法,以实现自己特有的行为 public class Horse : Animal { //通过override关键字来重写父类中方法 public override void Voice() { //调用父类中的方法 base.Voice(); Console.WriteLine("马发出嘶嘶。。。。嘶嘶。。。的声音"); } } //羊(子类) public class Sheep : Animal { public override void Voice() { base.Voice(); Console.WriteLine("羊发出咩。。。咩。。。。的声音"); } }}
结果:
阻止派生类重写虚成员—-
怎么停止对马类中的voice方法继续重写?使用sealed关键字,停止继续重新父类中方法
public class Horse : Animal { //通过override关键字来重写父类中方法 public sealed override void Voice() { //调用父类中的方法 base.Voice(); Console.WriteLine("马发出嘶嘶。。。。嘶嘶。。。的声音"); } }
此时如果再有类继承这个“马”类,就不能继承该vocice方法了
0 0
- C# 重写和重载
- C#重写 重载 new
- 重载、重写---C#
- C#中的重载与重写
- C# 重载 重写 覆盖 隐藏
- C#之重载、重写、覆盖
- c#中重载与重写
- C#中的重写和重载
- C#重载重写与覆盖
- c#中的重载和重写区别
- c#中的重载和重写区别
- C#重载和重写的区别
- C#重载和重写的区别
- C#多态 重载 虚方法 重写
- C#之方法的重载与重写
- 剪不断理还乱--C#重载/重写/覆盖
- C# 重载(overload)与重写(override)
- c#的重写(override)和重载(overload)
- tableau desktop(四) 导出和发布
- Dos命令查看端口占用及关闭进程
- 教你写Android网络框架之基本架构
- 2.Android Studio创建安卓项目及项目结构
- 透析 树状数组
- 重载、重写---C#
- MySql5.6 Window超详细安装教程
- 44.扑克牌的顺子
- ibsvm实现简单线性分类
- Leetcode|ZigZag Conversion
- shell 入门教程
- 《程序员的自我修养》读书笔记7
- 我认识的PE文件之相对虚拟地址 + 文件偏移地址
- ThinkingInJava 学习笔记 002