C#面向对象基础 —— 类与对象
文章来源: 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#面向对象基础 —— 类与对象的更多相关文章
- python基础--面向对象基础(类与对象、对象之间的交互和组合、面向对象的命名空间、面向对象的三大特性等)
python基础--面向对象 (1)面向过程VS面向对象 面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. ...
- C#面向对象基础--类与对象
1.类与对象 类是面向对象编程的基本单元:类造出来的变量叫对象. 一个类包含俩种成员:字段与方法. 字段即变量,方法即函数. 面向对象思想:教给我们如何合理的运用类的规则去编写代码. 2.类的字段 字 ...
- 077 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 02 类和对象
077 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 02 类和对象 本文知识点:类和对象 说明:因为时间紧张,本人写博客过程中只是对知识点 ...
- 第31节:Java基础-类与对象
前言 Java基础-类与对象,方法的重载,构造方法的重载,static关键字,main()方法,this关键字,包,访问权限,类的继承,继承性,方法的重写,super变量. 方法的重载:成员方法的重载 ...
- oop面向对象【类与对象、封装、构造方法】
今日内容 1.面向对象 2.类与对象 3.三大特征——封装 4.构造方法 教学目标 1.能够理解面向对象的思想 2.能够明确类与对象关系 3.能够掌握类的定义格式 4.能够掌握创建对象格式,并访问类中 ...
- C#基础篇--面向对象(类与对象)
1.类是什么? 类就相当于模板,就是把同一类的事物的共同特征进行的抽象. 类的创建和说明: 类是先根据一些具体的对象(实体的东西)来抽象出来的共同的特性,然后用代码来表示. 在类中,用数据表示事物的 ...
- java语言基础(四)_面向对象_类_对象_封装_构造
面向对象 Java语言是一种面向对象的程序设计语言,而面向对象思想是一种程序设计思想,我们在面向对象思想的指引下,使用Java语言去设计.开发计算机程序. 这里的对象泛指现实中一切事物,每种事物都具备 ...
- Java核心基础第5篇-Java面向对象_类和对象
Java面向对象之类和对象 一.面向对象概述 Java是完全的面向对象编程(Object Oriented Programming),简称OOP. 面向对象编程的思维方式更加符合大家的日常生活,因为我 ...
- 了解JavaScript 面向对象基础 & 原型与对象
面向对象语言中的对象 老是能听到什么基于对象, 面向对象. 什么是对象, 如果有面向对象基础的人可以无视了, 下面举个简单的例子给大家讲讲面向对象中, 对象的定义, 这个是比较通用的, 不过对于JS来 ...
随机推荐
- K8s 学习者绝对不能错过的最全知识图谱(内含 56个知识点链接)
导读:Kubernetes 作为云原生时代的“操作系统”,熟悉和使用它是每名用户的必备技能.本篇文章概述了容器服务 Kubernetes 的知识图谱,部分内容参考了网上的知识图谱,旨在帮助用户更好的了 ...
- leetcode 563 - 653
563. Binary Tree Tilt Input: 1 / \ 2 3 Output: 1 Explanation: Tilt of node 2 : 0 Tilt of node 3 : 0 ...
- 使用koa-body中间件后DELETE请求中ctx.request.body内容为空
gitbook浏览此随笔 出现场景 在使用koa-body 做文件上传的时候,发现使用DELETE请求时,request.body中的内容为空对象{} app.js //code... const K ...
- 日志lombok插件安装及配置
安装lombok插件 下载Lombok.jar http://projectlombok.googlecode.com/files/lombok.jar 运行Lombok.jar java -jar ...
- day 52
目录 静态文件配置 form表单默认是get请求 request方法的初识 数据库的迁移命令 静态文件配置 默认情况下所有的html文件都放在templates文件夹内 什么是静态文件 网站所使用到的 ...
- CentOS 7安装与配置JDK8
1.检查是否安装过JDK 2.下载安装包并上传服务器 3.安装JDK rpm -ivh jdk-8u131-linux-x64.rpm 4.查看是否安装正常 java -version 5.配置环境变 ...
- [C#] 利用方向鍵移動 TextBox Focus
論壇問題 版面上有 100 個 textbox,編號為 1-100,textbox 排列為 1 欄 20 個,共 5 欄,當一開打這個 form 會將在第一欄第一列第一個 textbox 的背景顏色變 ...
- JZOJ 平衡的子集
Description 夏令营有N个人,每个人的力气为M(i).请大家从这N个人中选出若干人,如果这些人可以分成两组且两组力气之和完全相等,则称为一个合法的选法,问有多少种合法的选法? Input 第 ...
- 下载额外数据文件失败 以下软件包要求安装后下载附加数据,但其数据无法下载或无法处理 ttf-mscorefonts-installer
故障显示: 一些软件包的数据文件无法下载 以下软件包要求安装后下载附加数据,但其数据无法下载或无法处理. ttf-mscorefonts-installer 这是一个永久错误,系统中的这些软件包将无法 ...
- 一次web请求发生的神奇故事
网络时代来临的时候,一个食指的点击就能解决很多问题! 那么当你的食指点击的时候,都发生了哪些神奇的事情呢?下面从几个角度为你做一个指引 1. 网络角度:一次网络请求是如何实现的 2. 浏览器角度:He ...