C#是纯粹的面向对象编程语言,它真正体现了“一切皆为对象”的精神。

在C#中,即使是最基本的数据类型,如int,double,bool类型,都属于System.Object(Object为所有类型的基类)类型。此外,使用C#编程,不会存在与游离于对象之外的属于过程的东西。因此,学习C#,就必须具有面向对象思想。

什么是类?

使用C#编程,所有的程序代码几乎都放在类中,不存在独立于类之外的函数。因此,类是面向对象编程的基本单元

在绝大多数面向对象语言中,一个类都可以包含两种成员:字段与方法。字段与方法这两个概念是面向对象理论的术语,是通用于各种面向对象语言的。而在各种的具体面向对象语言中,可以简单的这样理解:字段即变量,方法即函数

类的字段:代表了类中的数据,在类的所有方法之外定义了一个变量即定义了一个字段。变量前可以加上public、private和protected表示字段的访问权限。

例:

class ren

{

public decimal tizhong; //体重decimal类型

private static decimal nianling;//年龄decima类型,静态的

public int shengao=175;//身高int类型,身高赋值175cm;

}

类的方法:为了解决代码重复的问题,绝大多数程序设计语言都将完成某一公用功能的多个语句组合在一起,起一个名字用于代表这些语句的全体,这样的代码被称为“函数”。

例如:

[public | private] class 类名  //类名前的修饰符默认是public

{

[public | private]  数据类型  变量名;//定义变量

[public | private] 数据类型 函数名(参数列表)//定义函数

{

函数体;

}

}

  

在一个program.cs文件中添加一个类,而这个class类就是专门存放程序需要的函数方法的库(平时的积累),每一个 方法函数都由多个变量、语句等组成的一个代码块,而这个代码块有一个方法名,(在方法名前加修饰符public,private,protected等表 示这个函数的访问权限)需要时直接在主函数的文件中调用这个方法名即可。

函数也分为有返回值和无返回值两种情况。

<1>有返回值的情况(多种数据类型,如int,string,double等):

class  类名{

public int  函数名(int x,int y)

{

int z=x+y;

return z;//上面函数的数据类型就是return要返回的数据类型,一定要对应一致,才能在主函数中调用并输出返回值;

}

}

<2>无返回值的情况(void)

class  类名{

public void  函数名(int x,int y)//如果没有返回值,即在定义函数名前加void;

{

int z=x+y;

Console.Write("z的值为:"+z);直接在函数中输出

return;//或者直接return+分号;即没有返回值,不用在主函数中调用输出

}

}

方法的定义与使用

定义:放在一个类的函数(通常加一个存取权限修饰符)称为“方法”;

调用一个方法最基本的方式是通过类创建的对象。new初始化对象的过程是创建一个新对象的过程,利用原有的模板创建一个新的对象,开辟一个新的空间。

例如:ren r=new ren();

在ren类中定义一个Add()方法:

public class ren()

{

public int Add(int x,int y)

{

return x+y;

}

}

主函数调用ren()这个方法:

static void Main(string[] args)

{

ren r=new ren();//创建ren类的对象,命名r

int result=r.Add(100,200);//通过对象调用类的方法,结果保存在局部变量中

}

方法重载 

  方法重载是实现多态的另一个方法。通过方法重载,一个类中可以有多个具有相同名字的方法,由传递给它们的不同个数的参数来决定使用哪种方法。例 如,对于一个作图的类,它有一个draw()方法用来画图或输出文字,我们可以传递给它一个字符串、一个矩形、一个圆形,甚至还可以再制定作图的初始位 置、图形的颜色等。对于每一种实现,只需实现一个新的draw()方法即可,而不需要新起一个名字,这样大大简化了方法的实现和调用,程序员和用户不需要 记住很多的方法名,只需要传入相应的参数即可。

  因为类可以包含运算符如何运算的指令,所以可以把运算符用于从类实例化而来的对象。

  我们为重载运算符编写代码,把它们用作类定义的一部分,而该运算符作用于这个类。也可以重载运算符,以相同的方式处理不同的类,其中一个(或两个)类定义包含达到这一目的的代码。

注意:只能用这种方式重载现有的C#运算符,不能创建新的运算符。

练习:

用结构体做排序问题,输入学生的学号,姓名,成绩,按成绩由大到小排序。

C#面向对象基础类与方法的更多相关文章

  1. python 面向对象、特殊方法与多范式、对象的属性及与其他语言的差异

    1.python 面向对象 文章内容摘自:http://www.cnblogs.com/vamei/archive/2012/06/02/2532018.html   1.__init__() 创建对 ...

  2. OO开发思想:面向对象的开发方法(Object oriented,OO)

    面向对象的开发方法(Object oriented,OO)认为是好文章吧,拿来分享一下(转载) 面向对象的开发方法(Object oriented,OO) 从事软件开发的工程 师们常常有这样 的体会: ...

  3. 【Java基础】【08面向对象_继承&方法&final】

    08.01_面向对象(代码块的概述和分类)(了解)(面试的时候会问,开发不用或者很少用) A:代码块概述 在Java中,使用{}括起来的代码被称为代码块. B:代码块分类 根据其位置和声明的不同,可以 ...

  4. js面向对象 多种创建对象方法小结

    转自js面向对象 多种创建对象方法小结 1.对象字面量 var clock={ hour:12, minute:10, second:10, showTime:function(){ alert(th ...

  5. 面向对象中特殊方法的补充、isinstance/issubclass/type、方法和函数、反射

    一.面向对象中特殊方法的补充 1.__str__ 能将对象名改成你想要的字符串,但是类型还是类 class Foo(object): def __init__(self): pass def func ...

  6. 利用 Python 尝试采用面向对象的设计方法计算图形面积及周长

    利用 Python 尝试采用面向对象的设计方法.(1)设计一个基类 Shape:包含两个成员函数:def cal_area(): 计算并返回该图形的面积,保留两位小数:def cal_perimete ...

  7. day34 反射、面向对象内置方法:如__str__、面向对象的软件开发

    Python之路,Day21 = 反射.面向对象内置方法:如__str__.面向对象的软件开发 几个内置查看的方法使用 .__base__ 查看类的继承结构.mro() 对象找属性的顺序存在里面 -- ...

  8. C语言面向对象的简便方法

    都知道C语言是面向过程的,但是现在软件规模越来越大,通过面向对象的方式可以简化开发.业余时间想了个简单的方法,在C中使用一部分面向对象的基本功能.由于C语言自身的限制,并不完善,只能将就用,聊胜于无, ...

  9. python 3全栈开发-面向对象之绑定方法(classmethod与staticmethod的区别)、多态、封装的特性property

    一.面向对象绑定方法 一.类中定义的函数分成两大类 1.绑定方法(绑定给谁,谁来调用就自动将它本身当作第一个参数传入): 1. 绑定到类的方法:用classmethod装饰器装饰的方法. 为类量身定制 ...

随机推荐

  1. ACM——完数

    完数 时间限制(普通/Java):1000MS/3000MS          运行内存限制:65536KByte 总提交:1930            测试通过:413 描述 自然数中,完数寥若晨 ...

  2. 第三篇:gradle 编译 Android app 概览

    引言:经过上两篇的论述,我们已经从代码到架构都简单的熟悉了一遍,理论上,只要知道android app的编译过程,我们大可以自己写一份用gradle编译app的插件,插件内将将整个流程用Task的依赖 ...

  3. 2013年10月13日学习:SQL通过命令语句来创建表

    优点:操作简单,不容易出错,易于调试 缺点:需要记住命令.命令多了就容易混淆,是吧!但是熟悉了时间长了就OK了! step 1. 新建数据库,命名为Test 点击图形化界面中的新建查询,此时就可以输入 ...

  4. static的用途

    1)限制变量的作用域:即在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变: 2)限制变量的存储域:<a>在模块内(但在函数体外),一个被声明为静态的变量,可以被模块内的所 ...

  5. spring boot 配置文件提示自定义配置属性

    1.引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId> ...

  6. postgres create table default now

    key_time timestamp without time zone default timestamp 'now()' see http://wordpress.factj.com/

  7. 九度OJ 1019 简单计算器 -- 2006年浙江大学计算机及软件工程研究生机试真题

    题目地址:http://ac.jobdu.com/problem.php?pid=1019 题目描述:     读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值. 输入: ...

  8. EIGamal密码体制

    EIGamal密码体制:由EIGamal提出,是一种基于离散对数问题的双钥密码体制,既可用于加密,又可以用于签名. 密钥对生成步骤: 1.取大素数p和g<p(g最好是p的素根) 2.选一整数x& ...

  9. thinkphp 整合 ucenter

    http://xcodebox.com/2013/06/8855.html 参考 1   ucenter源码目录下 /advanced/examples/api目录 copy到thinkphp项目根目 ...

  10. python3实现的web端json通信协议

    之前有用python3实现过tcp协议的,后来又实现了http协议的通信,今天公司想做一个功能自动测试系统, 下午弄了一会,发现json格式的实现可以更简单一点,代码如下:简单解说一下,一般与服务器通 ...