05 C#种类的基本概念

本文详细介绍了C#中的类,包括类的概述、数据成员和函数成员、类的声明、实例化、内存分配、访问修饰符以及成员访问。类作为活动的数据结构,包含数据字段和方法,用于封装数据和功能。通过`new`运算符创建类的实例,并通过点运算符访问成员。同时,讨论了实例成员和静态成员的区别,以及访问修饰符如何控制成员的可见性。
摘要由CSDN通过智能技术生成

1. 类的概述

类是一种活动的数据结构

程序的数据和功能被组织为逻辑上相关的数据项和函数的封装集合,被称为类。

类是一个能存储数据并执行代码的数据结构。它包含数据成员和函数成员。

**数据成员:**它存储与类或类的实例相关的数据。数据成员通常模拟该类所表示的现实世界事物的特征。

**函数成员:**它执行代码,通常会模拟类所表示的现实世界事物的功能和操作。

一个C#类可以有任意数目的数据成员和函数成员。

2. 程序和类

一个运行中的C#程序是一组相互作用的类型对象,它们大部分是类的实例。

3. 声明类

自定义类,定义类的特征和成员,不是创建类的实例。

类的名称,类的成员,类的特征

关键字 类名

Class MyDefineClassName

{

成员声明

}

大括号内声明类的成员

例如,定义一个学生类:

public class Student

{

public string Name;

public int Id;

public int Age;

private double Chinese;

private double English;

public double Get_totalScores()

{

return Chinese + English;

}

}

public  是访问修饰符,class是自定义类的关键字,student是类名称

4. 类成员

字段和方法是重要的类成员类型。字符是数据成员,方法是函数成员

字段:

字段属于类的变量。可以是任何类,无论是预定义类型还是用户定义类型。和所有变量一样,字段是用来保存数据的。可读可写。

类型 字段名称 :Type  Identifier

如上自定义类中:

private double Chinese;

private double English;

定义了2个私有字段,类型是double,名称分别是Chinese和English。

所有字段都属于类型,必须在类的内部声明。这个2个变量属于Student类的。

显示和隐式字段的初始化

int x=10; //显示申明和初始化

没有初始化语句,字段值被编译器设为默认值。

整型默认0 ,布尔型默认false, 引用类型默认为null

声明多个字段

int x, y,z =123;

String a,b=”Test”;

变量必须先声明后使用,上字段x,y 是没有赋值的变量,在代码中不允许使用。

方法:

方法是具有名称的可执行代码块,可从程序的不同地方执行,有的也可在其它程序中执行。

方法的组词部分:返回类型,名称, 参数列表,方法体

如果方法无返回值,则使用void,方法没有参数时,要保留一对小括号,方法体由一对大括号组成。

上述代码中的方法

public double Get_totalScores()

{

return Chinese + English;

}

5. 创建变量和类的实例

类的声明只是用于创建类的实例的蓝图。一旦类被声明,就可以创建类的实例了。

类是引用类型。如果类没有被实例化,它的值就是未定义的,就没有在堆上分配内存。

6. 为数据分配内存

声明类类型的变量所分配的内存是用来保存引用的,而不是保存类对象的实际数据。要为实际数据分配内存,需要使用new 运算符。

Student s1 = new Student();

7. 实例成员

实例成员,类的每个实例都是不同的实体,它们都有自己的一组数据成员,不同于同一类的其它实例。因为这些数据成员都和类的实例关联,所以称为实例成员。

静态成员,与类关联的成员,而不是实例成员。

public string Name;

public int Id;

public int Age;

上面的Name,Id, Age 都是实例成员,且公用

Student s1 = new Student();

s1.Age = 10;

s1.Name = “Tester1”;

s1.Id = 1001;

Student s2 = new Student();

s2.Age = 22;

s2.Name = “Tester2”;

s2.Id = 1002;

Console.WriteLine($"{s1.Name} {s1.Id} {s1.Age}");

Console.WriteLine($"{s2.Name} {s2.Id} {s2.Age}");

输出:

Tester1 1001 10

Tester2 1002 22

字段的值与对应的实例有关,修改对象实例的值,只影响该实例的值。

在Student类中增加:

public static string SchoolName=“Middle No.1”;

该字段是静态字段,与实例无关,访问该字段直接使用 类名.字段名称

Console.WriteLine(Student.SchoolName);

8. 访问修饰符

从类的内部,任何函数成员都可以使用成员名称访问类中任何其它成员。

访问修饰符是成员声明的可选部分,指明程序的其它部分如何访问成员。

字段:访问修饰符 类型 字段名称;

方法:访问修饰符 返回类型 方法名称() {……}

5种成员访问控制:

私有private

公有public

受保护的 protected

内部的internal

受保护内部的protected internal

私有访问,是默认的访问级别,不带任何访问修饰符,它就是私有的

显示声明私有和隐式默认私有是等价的。私有成员只能被类的成员看见。

Private int x;

int x;

上演示类中2个私有字段:

private double Chinese;

private double English;

实例对象是无法访问的,且new创建类的实例对象后,被初始化为0

public double Get_totalScores()

{

return Chinese + English;

}

共有方法,类的任何实例都可以使用的

9. 从类的内部访问成员

public double Get_totalScores()

{

return Chinese + English;

}

在类的内部访问2个私有成员OK,在类的外部,实例都是无法访问的。

10. 从类的外部访问成员

要从类的外部访问实例成员,必须包含变量名称和成员名称,中间用句点(.) 分割。

点运算符dot-syntax notation

Student s1 = new Student();

s1.Age = 10;

s1.Name = “Tester1”;

s1.Id = 1001;

类的外部,创建类的实例s1,就可以访问类的实例成员了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

flysh05

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值