面向对象

说起面向对象,大家因该都听说过,也知道是一个编程的方法,简称oop技术。它将对象的算法和数据结构看作一个整体,而一个程序就是由多个对象结合的整体。这样做可以提高代码的复用率,提高了软件的可维护性。

属性

一个对象具有属性和方法,属性用来表述对象或类的特征,比如人的姓名、身高、性别、生日等都属于人的属性。在这里重点介绍下在c#中属性如何定义和使用。

定义

//定义属性必须声明类
public class date
{
//在date类中定义一个格式为int格式的属性,属性名称为day,并为它赋值为7
private int day=7
         //在这里,属性其实已经定义好了,不过很多属性都是private(私有的除了本类无法访问)所以我们还要给它写一个访问器
//声明一个访问器,使外部的数据可以读取和修改day的值
public int day
{
//从属性中得到day的值
get
{
//将day的值返回
return day;
}
set
{
//将值赋给day,实现修改的功能
day=value;
} }
}
//如果想要定义只读属性的话,只定义get即可,set访问器不用定义。只写属性类似于只读属性。

使用

定义完属性后,就是如何使用的问题了,我们用下面的带码讲述下代码如何使用:

class program
{
static void main(string[] args)
{
//将刚定义的date类实例化
date mydate = new date();
//给mydate的day属性赋值为3
            mydate.Day = 3;
            //在控制台输出myday这个对象的day属性的值,如果没有get这个访问器的话,控制台就无法访问到mydate的day属性。
            Console.WriteLine(mydate.Day);
}
}

方法

         属性说完了,接下来就是方法了。方法用于实现可以有对象或类执行的计算或操作。方法的声明必须指定方法的 访问级别、返回值、方法名称和方法参数。有的方法没有返回值的则定义为void类型,例如:

声明

public void test()
{
console.writeline("这是一个测试控制台输出的方法")
}

其中,public是访问的级别代表公共访问,是访问级别的一种;void是返回值的类型,void代表无返回值;test是方法的名称;()中应输入方法的参数,该方法不需要传入参数,所以()中是空白。该方法可以在控制台输出一条语句:"这是一个测试控制台输出的方法"。

重载

         重载方法是指类中有两个以上的同名方法,但是使用的参数类型、参数个数或顺序不同,调用方法时,编译器可以自动判断使用哪种方法。
         下面介绍一下代码的实现:
         
namespace ConsoleApplication14
{
//重载方法的代码实现
class Program
{
//这是第一个方法,定义了方法 add,包括x,y两个参数,两个参数都是int类型的
public static int add(int x, int y)
{
//方法返回值,返回一个int类型的值
return x + y;
}
//第二个方法,同样定义了方法 add,包括x,y两个参数,其中x是int类型,y是double类型
public static double add(int x, double y)
{
//方法返值,返回的是double类型的值,运行时系统自动将int(整数类型)转化为double(带小数的一种类型——双精度浮点数)
return x + y;
}
//第三个方法,方法的名字还是add,不过变成了三个参数
public static int add(int x, int y, int z)
{
return x + y + z;
}
//主函数体
static void Main(string[] args)
{
//将program类实例化,只有实例化成为对象后才可以调用方法关于类和对象的介绍可以看我以前的博客
// 类 对象
Program Program = new Program();
//定义参数x为int类型,并给它赋值为3
int x = 3;
//定义参数y1为int类型,并给它赋值为4
int y1 = 4;
//定义参y2为double类型,并给它赋值为5.5
double y2 = 5.5;
//定义参数z为int类型,并赋值为6
int z = 6; //现在我们将定义好的参数传递给我们的方法,并将返回值输出到控制台 //其中 + 符号代表的是连接符,将前面的字符与后面的字符链接;
//而“+”代表的是输出字符串,没有实际意义,仅仅是为了输出。
//如果不太理解可以忽略,不影响对整体的理解。
//在这里,传入的两个数据都是我们定义好的int类型的所以系统自动选择第一个方法,输出的结果是:3+4=7
Console.WriteLine (x + "+" + y1 + "=" + Program .add(x,y1) ); //这里输入的参数为x,y2其中x是int类型,而y2是double类型的
//系统会自动选择其中的第二个方法输出结果是 3+5.5=8.5
Console.WriteLine(x + "+" + y1 + "=" + Program.add(x, y2)); //这里输入参数为 x,y1,和z 系统会自动选择有三个参数的方法。输出结果是 3+4+6=13
Console.WriteLine(x + "+" + y1 + "=" + Program.add(x, y1,z)); //让控制台暂停
Console.ReadLine(); }
} }

这是程序运行后的图片:

         

c#入门系列——类和对象的代码实现的更多相关文章

  1. es6 快速入门 系列 —— 类 (class)

    其他章节请看: es6 快速入门 系列 类 类(class)是 javascript 新特性的一个重要组成部分,这一特性提供了一种更简洁的语法和更好的功能,可以让你通过一个安全.一致的方式来自定义对象 ...

  2. 【JAVA零基础入门系列】Day15 对象的比较

    最近一直有事,博客也停笔了一段时间,十分抱歉. 这一篇主要讲讲对象的比较,什么是对象的比较,我们知道两个数值类型只需要用"=="符号即可进行相等判断,但如果是两个Goods对象呢? ...

  3. Java入门系列-11-类和对象

    这篇文章为你搞懂类和对象的使用 对象:用来描述客观事物的实体,由一组属性和方法组成,万物皆对象. 属性:就是对象的特征,像身高.体重.颜色 方法:对象的行为,如跑.跳 类:类是模子,定义对象将会拥有的 ...

  4. OC开发系列-类与对象

    面向对象 面向对象思想是一种解决问题的思想, 不在是面向过程的去思考问题怎样解决.面向对象解决问题时首先要考虑需要找几个对象能解决这个问题. 常见的概念: * Object Oriented 面向对象 ...

  5. PHP类和对象等代码说明

    1.定义和创建类和对象: 定义类要使用class关键字.例如:class 类名{//属性和方法} 创建对象使用new关键字.例如: $p1 = new 类名;,可以基于一个类创建多个对象. 2. 类属 ...

  6. python入门17 类和对象

    类:一类事物的抽象化.概念: 类的变量(属于类的变量,定义在类的开始处)  成员变量(self.变量) 类的方法( @classmethod,cls参数)   成员方法( self参数 )  静态方法 ...

  7. java系列--类和对象

    一.成员属性,构造方法,成员方法 1.类名首字母一般大写 2.方法名的首字母一般是小写,使用驼峰法(匈牙利法) myCry, 下划线法 my_cry 3.方法的声明没有函数体(接口,抽象类),数据类型 ...

  8. java学习-初级入门-面向对象⑤-类与对象-类与对象的定义和使用3

    这次我们要做一个日期类Date类 主要目的是    1.  熟悉-->构造不同参数的函数  2.善于利用已有的函数!! 题目要求: Date类要求 可设定年月日 可转换为字符串,并可指定分隔符, ...

  9. java学习-初级入门-面向对象④-类与对象-类与对象的定义和使用2

    我们继续学习类与对象,上一篇我们定义了  坐标类(Point), 这次我们在Point的基础上,创建一个圆类(Circle). 案例:创建一个圆类 题目要求: 计算圆的周长和面积:求判断两个圆的位置关 ...

随机推荐

  1. ICE第四篇-----python版本

    ice文件: module Modipplace {     interface  Ipplace{          string iptoplace(string s);      };   }; ...

  2. POJ3268Dijkstra

    题意:给定n个点,m条边,求所有顶点中到顶点x的来回最短距离 分析:考虑到数据范围,选用Dijkstra,用Floyd会超时 #include <iostream> #include &l ...

  3. 安装php扩展后,执行时找不到扩展 class xxx no found

    当编译安装一个新的php扩展,例如安装redis, 安装后 执行 new Redis(), 如果发现找不到class Redis,可以先检查redis.so文件是否在php的扩展目录下, 如果发现是, ...

  4. iOS开发——An App ID with identifier "*****" is not avaliable

    Error: An App ID with identifier "*****" is not avaliable. Please enter a different string ...

  5. CSS 弹性盒子布局

    学习地址:https://developer.mozilla.org/zh-CN/docs/Web/CSS/CSS_Flexible_Box_Layout

  6. .net面试题【持续更新.....】

    1.C#中readonly和const的区别? 2.C#中的排序继承自哪个接口?Icompare 3.阐述单点登录的实现原理? 4.C#中property和Attribute的区别? 5.Datase ...

  7. 安卓handler、thread实现异步任务

    [转]http://blog.csdn.net/lanpy88/article/details/6659630 一Handler的定义: 主要接受子线程发送的数据, 并用此数据配合主线程更新UI.   ...

  8. bzoj2453

    传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=2453 题目大意: (1)       若第一个字母为“M”,则紧接着有三个数字L.R.W.表 ...

  9. Hibernate详细教程

    一.搭建Hibernate环境 1.在src目录下创建hibernate.cfg.xml配置文件 PS:文件的名字不能改! <?xml version="1.0" encod ...

  10. 【bzoj3998】 TJOI2015—弦论

    http://www.lydsy.com/JudgeOnline/problem.php?id=3998 (题目链接) 题意 给出一个字符串,求它的字典序第K小的子串是什么,分情况讨论不在同一位置的相 ...