C#之方法
来源:互联网 发布:sql server的distinct 编辑:程序博客网 时间:2024/06/10 16:30
一、首先说说什么是方法?
我个人觉得在c#中方法用一个词来说其实就是“行为”,属性则为“特征”,下面举个例子:
属性:一个人,有头、脚、手,这些就是人的属性
方法:一个人会跑,会跳,这就是方法
二、下面说说方法的定义:
[访问修饰符:public、private、protected] [static] 返回值类型 方法名()
{
方法体;
}
注:※ 命名规则:方法名开头大写,参数名开头小写,参数名和变量名要有意义
※ 方法的调用:对于静态方法的调用有两种方法:
(1)如果在同一个类中,直接写名字调用就行了
(2)类名.方法名()
※ return可以立即退出方法
三、C#中子类可以继承父类的哪些方法:
除了密封类,其他的几乎都可以被子类继承的,还有一个特殊的,内部类只能在同一个程序集中继承
四、方法的返回值
方法可以返回任何类型的值,同样也可以不返回任何值,返回值类型在方法的头部得以体现
五、构造方法:
构造方法其实就是对类进行初始化。构造方法与类同名,无返回值,也不需要void,在new时候调用
六、方法重载:
方法重载:即在一个类中定义多个方法名相同、方法间参数个数和参数顺序不同的方法。其实就是让类以统一的方式处理不同类型数据的一种手段。
现在很多书都说方法就是函数,下面用函数重载进行举例:
函数重载是指同一个函数名可以对应着多个函数的实现,如一个Add函数,既可以返回两个数值型的和,也可以返回两个字符型数据的和。这就说明Add函数被“重载”了。
注意:重载的两个知识点:函数同名,参数不同。其实,当应用程序调用函数时,就是通过参数来判断运行哪个函数。
举例:下面来定义一个Add函数,返回两个数值类型数据的和,同时重载Add函数,返回两个字符类型数据的和:
public int Add (int a, int b) //返回两个数值型数据的和
{
return a +b;
}
public string Add(string str1, string str2) //返回两个字符型数据的和
{
return str1+str2;
}
七、虚方法和方法重写:
在这里要说虚方法和方法重写我得先提一下面向对象三大特征之一的多态。
※ 多态:表示不同的对象可以执行相同的动作,但要通过它们自己的实现代码来执行。
举例:就用书上的例子“国粹”,这里只简单的说一下,有一天突然父亲生病了,无法上台表演,最好的办法就是让儿子代替父亲上台表演,正好京剧都需要化妆,只要唱得好就可以糊弄过去了。儿子在这么多年模仿父亲肯定把父亲的绝活都学到了,也会有自己的创作,但现在儿子是以父亲的身份表演的,儿子特有的绝活在此时是不能表现出来的。当然,如果父亲还有别的儿子会表演,也可以在此时代表父亲上场,道理也是一样的,这就是多态。
※ 下面来说虚方法和方法重写
为了使子类的实例完全接替来自父类的类成员,父类必须将该成员声明成虚拟的。这是通过在该成员的返回类型之前添加virtual关键字来实现。尽管方法可以是虚拟的,但虚方法还是有方法体,可以实际做些事情。然后,子类可以选择使用override关键字,将父类实现替换为它自己的实现,这就是方法重写Override,或者叫做方法覆写。
举例:
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace _05多态{ class Program { static void Main(string[] args) { Person p = new Person(); p.Show(); Teacher t = new Teacher(); t.Show(); Console.ReadKey(); } } //人类 public class Person { public virtual void Show()//虚方法 { Console.WriteLine("我是人别害怕"); } } //教师类 public class Teacher : Person { public override void Show()//重写父类(即人类)的Show方法 { Console.WriteLine("我是老师了"); } }}
显示结果:
八、最后提一下抽象方法:
抽象方法必须被子类重写,可以被看做没有实现体的虚方法。如果类中包含抽象方法,那么类就必须定义为抽象类,不论是否还包含其他一般方法
- C#之扩展方法
- C#之扩展方法
- C#之方法重载
- C# 之 扩展方法
- c#之join方法
- C#之构造方法
- C#之方法
- C#学习之方法
- C#之方法
- c#方法之 实例方法
- C#3.0之扩展方法
- C#基础之方法(Method)
- C#拾遗之方法(一)
- C#拾遗之方法(二)
- C#之方法与函数
- C#之线程同步方法
- C#之虚方法解读
- 【C#】C#学习之方法
- redis常用命令
- Android Studio HTTP Proxy Setting
- JS的继承
- 【开源框架】二维码生成工具类
- 断开和服务器共享连接的方法
- C#之方法
- ionic 轮播图
- Hibernate一级缓存
- bzoj2127 happiness
- 并查集加深[三道例题]
- OSHeap详解
- #Python 廖雪峰老师#Week 1_4:list和tuple/条件判断/循环/dict和set
- Java有哪12要素和其他因素?
- 一文看懂大数据的技术生态圈,Hadoop,hive,spark都有了