1、类与对象

类是面向对象编程的基本单元;类造出来的变量叫对象。

一个类包含俩种成员:字段与方法

字段变量方法函数

面向对象思想:教给我们如何合理的运用类的规则去编写代码。

2、类的字段

字段代表了类中的数据。在变量之前可以加上public、private和protected表示字段的访问权限。

3、类的方法

(1)、函数的概念

表达式:

返回值类型  方法名(参数列表)

{

语句1;

语句2;

.....

return 表达式;

}

函数需要向外界返回一个值,由return语句实现。

如果一个函数没有返回值或不关心其返回值,则将其返回值定义为void。

(2)、方法的定义与使用

放在一个类中的函数(通常附加一个存取权限修饰符如public和private)称为“方法”。

访问一个 方法 的最基本方式是通过类创建的对象;则可以通过使用new关键字创建类的对象来访问此方法。

(3)、方法重载

两个同范围(同一个类,或者父子类中)两个同名但参数类型不同或者参数个数不同的方法互相间构成重载关系。

两个构成重载关系的函数必须满足:
       函数名相同
       参数类型不同,或参数个数不同。(* 函数返回值类型的不同不是函数重载的判断条件)
    这两个同名的函数彼此构成了“重载关系”。

输出:

输出(带参数):

4、类的静态成员

类中的函数,如果在声明时没有加“static”关键字,则称之为类的“实例方法”。

加了“static”关键字的方法,则称之为类的“静态方法”。

加了“static”关键字的字段,则称之为字段的“静态字段”。

静态成员是不随着new的对象初始化,直接跟着类名走。

静态成员:不随着造对象初始化,所有对象共享直接通过类名调用

(1)、访问类的静态成员的基本方法

类名.静态方法名(参数列表)

(2)、类静态成员的特性

类的静态成员是供类的所有对象所共享的

函数也可以用静态成员

(3)、类实例成员与静态成员的访问规则

位于同一类的实例方法可以直接互相调用。
     类的字段(包括实例字段和静态字段)可以被同一类中的所有实例方法直接访问、
     类中的静态方法只能直接访问类静态字段;要访问实例方法,要在静态方法中创建对象。

    

5、类的属性

属性是一种特殊的“字段”

属性由两个特殊的读访问器和写访问器组成。
  当读取属性时,读访问器被调用,仅简单地向外界返回私有字段的值。
  当设置属性时,写访问器别调用,先检查外界传入的值是不是空串,再将传入的值保存于私有字段中。

在读访问器中有一个特殊的变量value必须特别注意,代表了外界传入的值。

编写属性的方法:
  (1)、设计一个私有的字段用于保存属性的数据 。
  (2)、设计get读访问器和set写访问器存取私有字段数据。

6、深入理解类与对象

(1)、类和对象的区别

对象是以类模板创建出来的。类与对象之间是一对多的关系。

在C#,使用new关键字创建对象。

在程序中“活跃”的是对象而不是类。

---“对象”与“类的实例”这两个概念是等同的

(2)、类的构造函数(一般用于初始化类的私有数据字段)

当使用new关键字创建一个对象时,一个特殊的函数自动调用,这就是类的构造函数。

在C#中,类的构造函数与类名相同,没有返回值。

带()的都是函数

构造函数每个类至少有一个构造函数,名字与类名同名;都是可以重载的。

凡事构造对象,都是通过先调用构造函数造出来的

一般用于给成员赋初始值

用于跨类之间数据传输

带参数的构造函数

(3)、引用类型与值类型

区别:

值类型的变量一定义之后就马上可用。

引用类型的变量定义之后,还必须用new关键字创建对象后才可以使用。

C#的所有值类型均隐式派生自System.ValueType:

  • 结构体:struct(直接派生于System.ValueType);

    • 数值类型:

      • 整 型:sbyte(System.SByte的别名),short(System.Int16),int(System.Int32),long (System.Int64),byte(System.Byte),ushort(System.UInt16),uint (System.UInt32),ulong(System.UInt64),char(System.Char);
      • 浮点型:float(System.Single),double(System.Double);
      • 用于财务计算的高精度decimal型:decimal(System.Decimal)。
    • bool型:bool(System.Boolean的别名);
    • 用户定义的结构体(派生于System.ValueType)。
  • 枚举:enum(派生于System.Enum);
  • 可空类型(派生于System.Nullable<T>泛型结构体,T?实际上是System.Nullable<T>的别名)。

值类型(Value Type),值类型实例通常分配在线程的堆栈(stack)上,并且不包含任何指向实例数据的指针,因为变量本身就包含了其实例数据

C#中的引用类型

  • 数组(派生于System.Array)
  • 用户用定义的以下类型:
    • 类:class(派生于System.Object);
    • 接口:interface(接口不是一个“东西”,所以不存在派生于何处的问题。Anders在《C# Programming Language》中说,接口只是表示一种约定[contract]);
    • 委托:delegate(派生于System.Delegate)。
  • object(System.Object的别名);
  • 字符串:string(System.String的别名)。

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

  1. python基础--面向对象基础(类与对象、对象之间的交互和组合、面向对象的命名空间、面向对象的三大特性等)

    python基础--面向对象 (1)面向过程VS面向对象 面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. ...

  2. C#面向对象基础 —— 类与对象

    文章来源: https://www.cnblogs.com/huluobozu/p/5070500.html 一.类与对象 类是面向对象编程的基本单元:类造出来的变量叫对象. 一个类包含俩种成员:字段 ...

  3. 077 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 02 类和对象

    077 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 02 类和对象 本文知识点:类和对象 说明:因为时间紧张,本人写博客过程中只是对知识点 ...

  4. 第31节:Java基础-类与对象

    前言 Java基础-类与对象,方法的重载,构造方法的重载,static关键字,main()方法,this关键字,包,访问权限,类的继承,继承性,方法的重写,super变量. 方法的重载:成员方法的重载 ...

  5. oop面向对象【类与对象、封装、构造方法】

    今日内容 1.面向对象 2.类与对象 3.三大特征——封装 4.构造方法 教学目标 1.能够理解面向对象的思想 2.能够明确类与对象关系 3.能够掌握类的定义格式 4.能够掌握创建对象格式,并访问类中 ...

  6. C#基础篇--面向对象(类与对象)

    1.类是什么?  类就相当于模板,就是把同一类的事物的共同特征进行的抽象. 类的创建和说明: 类是先根据一些具体的对象(实体的东西)来抽象出来的共同的特性,然后用代码来表示. 在类中,用数据表示事物的 ...

  7. java语言基础(四)_面向对象_类_对象_封装_构造

    面向对象 Java语言是一种面向对象的程序设计语言,而面向对象思想是一种程序设计思想,我们在面向对象思想的指引下,使用Java语言去设计.开发计算机程序. 这里的对象泛指现实中一切事物,每种事物都具备 ...

  8. Java核心基础第5篇-Java面向对象_类和对象

    Java面向对象之类和对象 一.面向对象概述 Java是完全的面向对象编程(Object Oriented Programming),简称OOP. 面向对象编程的思维方式更加符合大家的日常生活,因为我 ...

  9. 了解JavaScript 面向对象基础 & 原型与对象

    面向对象语言中的对象 老是能听到什么基于对象, 面向对象. 什么是对象, 如果有面向对象基础的人可以无视了, 下面举个简单的例子给大家讲讲面向对象中, 对象的定义, 这个是比较通用的, 不过对于JS来 ...

随机推荐

  1. python类相关总结(持续更新)

    __init__() 构造函数 __new__ () 在构造函数之前,用来创建对象的,返回值是一个对象,__init__指的是将__new__返回的对象作为self来传入函数中,后续参数两者都可以一样 ...

  2. 关于springmvc 只能在index.jsp页面显示图片的处理办法jsp页面无法显示图片

    首先,已经配置好了mvc对静态资源的处理 只有index,jsp可以显示图片 其他页面同样的代码则不显示 后来折腾了半天,发现 index是static的父目录的级别文件 可以向下访问 但是其他的js ...

  3. IbatchBolt和BaseTransactionalBolt区别

    void prepare(java.util.Map conf, TopologyContext context, BatchOutputCollector collector, T id) T id ...

  4. Leetcode120.Triangle三角形最小路径和

    给定一个三角形,找出自顶向下的最小路径和.每一步只能移动到下一行中相邻的结点上. 例如,给定三角形: [ [2], [3,4], [6,5,7], [4,1,8,3] ] 自顶向下的最小路径和为 11 ...

  5. php pdo操作数据库的方法

    PDO 安装 你可以通过 PHP 的 phpinfo() 函数来查看是否安装了PDO扩展. 1.在 Unix /linux系统上安装 PDO 在Unix上或Linux上你需要添加以下扩展: exten ...

  6. HR招聘_(十)_招聘方法论(供应商管理)

    招聘和供应商长期合作,所以供应商管理也至关重要.供应商一般分为猎头,渠道,外包三类. 猎头 高端职位,高难度职位,急需职位和量大职位会和猎头公司合作共同完成招聘任务,猎头公司一般会有两种服务,猎头和R ...

  7. Hdu 2389 二分匹配

    题目链接 Rain on your Parade Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 655350/165535 K (Ja ...

  8. Python判断文件和文件夹是否存在的方法

    Python判断文件和文件夹是否存在的方法 这篇文章主要介绍了Python判断文件和文件夹是否存在的方法,本文还讲解了判断是否为文件或者目录的方法.os.path.lexist的作用.FTP中判断文件 ...

  9. php去除文件bom头

    有时候在ajax返回的json数据前多出一些不明的字符,就是所谓的bom头,导致javascript解析json格式失败,下面贴出一段PHP代码实现检测和去除bom头. <?php header ...

  10. React 按需加载 - 代码分隔

    代码分隔 我们现在大多数React项目都是以Webpack 或者 Browserify等将一堆的jsx文件组织一起,并且由一个类似index.js的入口文件串联起来的单页面web页面. 例如: // ...