文章来源: https://www.cnblogs.com/huluobozu/p/5070500.html

一、类与对象

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

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

字段即变量,方法即函数。

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

二、类的字段

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

三、类的方法

1,函数的概念

表达式:
返回值类型 方法名(参数列表)
{
语句1;
语句2;
...
return 表达式;
}

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

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

2,函数的定义和使用

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

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

3,方法的重载

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

两个构成重载关系的函数必须满足:

(1)函数名相同。

(2)参数类型不同,或参数个数不同(函数返回值类型的不同不是函数重载的判断条件)。

这两个同名的函数彼此构成了“重载关系”。

class Class1
{
/// <summary>
/// 函数,方法
/// </summary>
public void print()
{
Console.WriteLine("hello~");
} /// <summary>
/// 带参数的方法
/// </summary>
/// <param name="val"></param>
public void print(string val)
{
Console.WriteLine(val);
}
}

调用:

class Program
{
static void Main(string[] args)
{
Class1 class1 = new Class1();
//class1.print(); // hello~
class1.print("hi~"); // hi~
}
}

4,类的静态成员

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

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

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

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

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

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

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

(2)类静态成员的特性

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

class Class1
{
public int a; // 普通成员
public static int b; // 静态成员 static;在静态成员中一般不引用普通成员
} class Program
{
static void Main(string[] args)
{
for (int i = ; i < ; i++)
{
Class1.b++; // 静态++
new Class1().a++; // 实体化一个新的对象
Console.WriteLine(Class1.b + " " + new Class1().a + "\n");
}
Console.WriteLine(new Class1().a);
Console.WriteLine(Class1.b); }
}

输出结果:

class Class1
{
public int a; // 普通成员
public static int b; // 静态成员 static;在静态成员中一般不引用普通成员
} class Program
{
static void Main(string[] args)
{
for (int i = ; i < ; i++)
{
Class1.b++;
Class1 c = new Class1();
c.a++; // 新的对象 +1
Console.WriteLine(Class1.b + " " + new Class1().a + "\n");
}
Console.WriteLine(new Class1().a);
Console.WriteLine(Class1.b); }
}

输出结果:

函数也可以用静态成员。

3,类实例成员与静态成员的访问规则

位于同一类的实例方法可以直接互相调用。

类的字段(包括实例字段和静态字段)可以被同一类中的所有实例方法直接访问。

类中的静态方法只能直接访问类静态字段;要访问实例方法,要在静态方法中创建对象。

class Class1
{
public int a; // 普通成员
public static int b; // 静态成员 static;在静态成员中一般不引用普通成员 public int sum() {
return a + b;
}
} class Program
{
static void Main(string[] args)
{
Class1.b = ; // 赋予新的值
Class1 c = new Class1();
c.a = ;
Console.WriteLine(c.sum()); // int d = new Class1().sum();
Console.WriteLine(d); // }
}

5,类的属性

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

属性由两个特殊的读访问器和写访问器组成。

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

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

编写属性的方法:

(1)设计一个私有的字段用于保存属性的数据 。

(2)设计get读访问器和set写访问器存取私有字段数据。

6,深入理解类和对象

(1)类和对象的区别

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

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

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

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

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

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

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

带()的都是函数

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

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

一般用于给成员赋初始值。

用于跨类之间数据传输。

class Class1
{
public Class1() // 默认就存在构造函数,与类名相同,没有返回值
{ } public string Name; // 成员变量
} class Program
{
static void Main(string[] args)
{
Class1 d = new Class1();
d.Name = "tom";
Console.WriteLine(d.Name); // tom
}
}

带参数的构造函数:

class Class1
{
public Class1(string name) // 默认就存在构造函数,与类名相同,没有返回值
{
Name = name;
} public string Name; // 成员变量
} class Program
{
static void Main(string[] args)
{
Class1 d = new Class1("jack");
Console.WriteLine(d.Name); // jack
}
}

(3)引用类型与值类型

区别:

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

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

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

  • 结构体:struct(直接派生于System.ValueType);
  • 枚举:enum(派生于System.Enum);
  • 可空类型(派生于System.Nullable<T>泛型结构体,T?实际上是System.Nullable<T>的别名)。

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

C#中的引用类型:

  • 数组(派生于System.Array)
  • object(System.Object的别名);
  • 字符串:string(System.String的别名)。

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

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

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

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

    1.类与对象 类是面向对象编程的基本单元:类造出来的变量叫对象. 一个类包含俩种成员:字段与方法. 字段即变量,方法即函数. 面向对象思想:教给我们如何合理的运用类的规则去编写代码. 2.类的字段 字 ...

  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. Leetcode80. Remove Duplicates from Sorted Array II删除排序数组中的重复项2

    给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成. 示例  ...

  2. 从大数据到快数据 数据智创未来——2019 CCF大数据与计算智能大赛正式开赛!

    8月17日,以“数据驱动,智创未来”为主题的2019 CCF大数据与计算智能大赛(CCF Computing Intelligence Contest,简称CCF BDCI)全球启动仪式,在北京大学正 ...

  3. SSM-5zookeeper在LINUX上自启

    把zookeeper做成服务 1.进入到/etc/rc.d/init.d目录下,新建一个zookeeper脚本 [root@zookeeper ~]# cd /etc/rc.d/init.d/ [ro ...

  4. 7 个令人兴奋的 JavaScript 新特性

    前言 一个ECMAScript标准的制作过程,包含了Stage 0到Stage 4五个阶段,每个阶段提交至下一阶段都需要TC39审批通过.本文介绍这些新特性处于Stage 3或者Stage 4阶段,这 ...

  5. jeecms之全文检索

    需要在后台生成检索,如下: . 这样,在首页进行搜索的时候才会显示如下: 注意,一定要先生成索引,才能进行全文检索.  

  6. golang redis_example

    main.go package main import ( "fmt" "github.com/garyburd/redigo/redis" ) func ma ...

  7. SpringCloud微服务实战一:Spring Cloud Eureka 服务发现与注册中心(高可用实列为两个注册中心)

    微服务架构: 微服务架构的核心思想是,一个应用是由多个小的.相互独立的.微服务组成,这些服务运行在自己的进程中,开发和发布都没有依赖.不同服务通过一些轻量级交互机制来通信,例如 RPC.HTTP 等, ...

  8. AspNet 常有功能函数1.0

    1.net 获取客户端ip方法(此方法不是很准确) public static string GetIP() { string str; if (!string.IsNullOrEmpty(HttpC ...

  9. 【python之路9】类型定义与转换

    一.整型(int),int的作用 1.创建int类型并赋值 n = 10 或者 n = int(10)   #只要是类名加括号,都会去执行类中的 __init__()方法 n = 10,实际内部会去执 ...

  10. 发布Qt Widgets桌面应用程序的方法

    Qt是一款优秀的跨平台开发框架,它可以在桌面.移动平台以及嵌入式平台上运行.目前Qt 5介绍程序发布的文章帖子比较少.大家又非常想要知道如何发布Qt应用程序,于是我花了一点儿时间介绍一下如何发布Qt桌 ...