c#面向对象基础 类、方法、方法重载
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#运算符,不能创建新的运算符。
练习:
用结构体做排序问题,输入学生的学号,姓名,成绩,按成绩由大到小排序。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections;
namespace jiegoutipaixu
{
class Program
{
public struct student //定义结构体数据类型
{
public int code;
public string name;
public double degree;
}
public ArrayList paixu(ArrayList shuzu)
{
for (int i = 0; i < shuzu.Count - 1; i++)
{
for (int j = i + 1; j < shuzu.Count; j++)
{
if (((student)shuzu[i]).degree < ((student)shuzu[j]).degree)
{ //等量代换
student zhong = new student();
zhong = (student)shuzu[i];
shuzu[i] = shuzu[j];
shuzu[j] = zhong;
}
}
}
return shuzu;
}
static void Main(string[] args)
{
Console.Write("请输入学生人数:");
int renshu = int.Parse(Console.ReadLine());
ArrayList shuzu = new ArrayList();//根据人数定义数组容器 for (int i = 0; i < renshu; i++) //根据人数去循环输入学生信息
{
student s = new student();
Console.Write("请输入第{0}个学生的学号:", i + 1);
s.code = int.Parse(Console.ReadLine());
Console.Write("请输入第{0}个学生的姓名:", i + 1);
s.name = Console.ReadLine();
Console.Write("请输入第{0}个学生的成绩:", i + 1);
s.degree = int.Parse(Console.ReadLine());
shuzu.Add(s);
}
shuzu = new Program().paixu(shuzu);
//3.输出
Console.WriteLine("*********成绩如下*********");
Console.WriteLine(" 学号 姓名 分数");
foreach (student a in shuzu)
{
Console.Write(" ");
Console.Write(a.code);
Console.Write(" ");
Console.Write(a.name);
Console.Write(" ");
Console.Write(a.degree);
Console.WriteLine();
}
Console.ReadLine();
}
}
}
c#面向对象基础 类、方法、方法重载的更多相关文章
- Java基础语法04面向对象上-类-属性-方法-可变参数-重载-递归-对象数组
类 面向对象是一种思想,一般指将事务的属性与方法抽出总结为模板(类/class),处理事务时通过类创建/new出对象由对象的功能/方法去完成所要计算处理的事情. 面向过程:POP:以过程,步骤为主,考 ...
- 02java基础——类和方法
1.类的定义 /* 定义类: 使用类的形式,对现实中的事物进行描述 事物: 属性,方法 属性: 变量 方法: 这个事物具备的功能 格式: public class 类名{ 属性定义 修饰符 数据类型 ...
- C#面向对象基础:virtual方法,abstract方法,区别
virtual 关键字用于修饰方法.属性.索引器或事件声明,并使它们可以在派生类中被重写.默认情况下,类中的方法是非虚的,非虚的方法不能在子类中被覆盖(override),但是可以隐藏(new),但这 ...
- python基础--类的方法
一:类的方法说明 类的方法分为实例方法,析构方法,构造方法,类方法,静态方法,属性方法,等等 类方法和静态方法都可以被类和类实例调用,类实例方法仅可以被类实例调用 类方法的隐含调用参数是类,而类实例方 ...
- C#面向对象基础 —— 类与对象
文章来源: https://www.cnblogs.com/huluobozu/p/5070500.html 一.类与对象 类是面向对象编程的基本单元:类造出来的变量叫对象. 一个类包含俩种成员:字段 ...
- C#面向对象基础--类与对象
1.类与对象 类是面向对象编程的基本单元:类造出来的变量叫对象. 一个类包含俩种成员:字段与方法. 字段即变量,方法即函数. 面向对象思想:教给我们如何合理的运用类的规则去编写代码. 2.类的字段 字 ...
- python基础--面向对象基础(类与对象、对象之间的交互和组合、面向对象的命名空间、面向对象的三大特性等)
python基础--面向对象 (1)面向过程VS面向对象 面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. ...
- Python 面向对象基础(类、实例、方法、属性封装)
python是面向对象语言,一切皆对象. 面向过程: 变量和函数. “散落” 在文件的各个位置,甚至是不同文件中.看不出变量与函数的相关性,非常不利于维护,设计模式不清晰. 经常导致程序员,忘记某个变 ...
- Python基础——类new方法与单例模式
介绍: new方法是类中魔术方法之一,他的作用是给类实例化开辟一个内存地址,并返回一个实例化,再由__init__对这个实例进行初始化,故它的执行肯定就是在初始化方法__init__之前了.new方法 ...
随机推荐
- LoadRunner脚本
Action() { char *str1=(char *)malloc(1024*sizeof(char)); char *str2="0"; char *str3=(char ...
- Loadrunner中关联的作用:
获取并保存变化的request值{1.sessionid;2.获取上个请求的响应值,用于下个请求参数} 作为检查点 脚本调试工具
- C# 溢出检查
checked: byte b = 255; checked { b++; } Console.WriteLine(b.ToString()); 执行出错:算术运算导致溢出. unchecked: b ...
- 基于PHP以及Mysql,使用WordPress搭建站点
1.前提环境是PHP以及Mysql以及安装配置完成,Nginx服务启动: 2.配置Mysql的初始密码:mysql安装后,默认root密码是空的,所以要设置密码: mysql -u root mys ...
- matlab坐标外围背景变白色
set(gcf,'Color',[1,1,1]) 默认图片是这样的: 出图之前使用命令,外围变白后效果如下:
- 20145223《Java程序程序设计》第9周学习总结
20145223<Java程序设计>第9周学习总结 教材学习内容总结 第十六章:整合数据库 JDBC入门 1.JDBC简介: 2.JDBC主要分成两个部分,JDBC应用程序开发者接口和JD ...
- git 学习笔记5--rm & mv,undo
rm 删除文件 rm <file> #Unix删除文件 git rm <file> # git删除文件 git rm -f <file> # git强制删除文件 g ...
- Python学习笔记02
元组:圆括号的,不能进行赋值操作,即不可更改. 列表:方括号的,可以修改. 访问:均使用下标访问 # 元组是一个静态列表,初始化之后就不可以修改,可以试任意类型 tuple1 = ('a st ...
- oracle sql别名
为sql的字段起一个别名,常以为是可有可无的,但是有时候是必要的. 例如在ibatis中 <!-- 获取已发或待发送的彩信记录列表 --> <resultMap id="m ...
- python程序设计语言笔记 第一部分 程序设计基础
1.1.1中央处理器(CPU) cpu是计算机的大脑,它从内存中获取指令然后执行这些指令,CPU通常由控制单元和逻辑单元组成. 控制单元用来控制和协调除cpu之外的其他组件的动作. 算数单元用来完成数 ...