C#中级教程-类和对象

类实际上是创建对象的模板,每个对象都包含数据,并提供了处理和访问数据的方法。
类定义了类的每个对象(称为实例)可以包含什么数据和功能。

类中的数据和函数称为类的成员
数据成员:数据成员是包含类的数据–字段,常量和事件的成员。
函数成员:提供了操作类中数据的某些功能。(方法,属性,构造方法和终结器(析构方法),运算符,和索引器)

字段的声明(数据)
访问修饰符 类型 字段名称;

方法的声明(函数)
访问修饰符 返回值类型 方法名称(参数){
//方法体
}

举例:
class Customer{
public string name;
public string address;
public int age;
public string buyTime;
public void Show(){
Console.WriteLine(“名字:”+name);
Console.WriteLine(“年龄:”+age);
Console.WriteLine(“地址:”+address);
Console.WriteLine(“购买时间:”+buyTime);
}
}

类分为两部分

从字段来说,主要知识点

访问修饰符:
public
Public ,公共的,访问修饰符允许一个类将其成员变量和成员函数暴露给其他的函数和对象。任何公有成员可以被外部的类访问。
同时public适用于字段和方法。
private
private,私有的,修饰字段和方法的时候,表示该字段或者方法能不能通过对象去访问,只有public的才可以通过对象访问,private(私有的)只能在类模板内部访问。
protect
protect,保护的,当没有继承的时候,它的作用和private是一样的,当有继承的时候,protected表示可以被子类访问的字段或者方法。Protected 访问修饰符允许子类访问它的基类的成员变量和成员函数
Internal
Internal 访问说明符允许一个类将其成员变量和成员函数暴露给当前程序中的其他函数和对象。换句话说,带有 internal 访问修饰符的任何成员可以被定义在该成员所定义的应用程序内的任何类或方法访问。
Protected Internal
Protected Internal 访问修饰符允许在本类,派生类或者包含该类的程序集中访问。这也被用于实现继承。
总结:
(1) Pubilc :任何公有成员可以被外部的类访问。
(2) Private :只有同一个类中的函数可以访问它的私有成员。
(3) Protected :该类内部和继承类中可以访问。
(4) internal : 同一个程序集的对象可以访问。
(5) Protected internal :3 和 4 的并集,符合任意一条都可以访问。
范围比较:
private < internal/protected < protected internal < public

字段类型:
基础类型:int float char string bool
复杂类型:匿名类型var 数组 字典 目录 枚举
匿名类型
我们创建变量(对象的时候),必须指定类型,其实我们也可以不去指定类型,这个就是匿名类型,我们可以使用var声明一个匿名类型。
使用var声明的匿名类型,当初始化的时候,这个变量的类型就被确定下来,并且以后不可以修改。
var var1 = 34;

从函数来说,主要知识点

访问修饰符(同字段)
public
private
protect
返回值类型:void,float,int。。。(同字段类型)
构造函数
析构函数

构造函数
我们构造对象的时候,对象的初始化过程是自动完成的,但是在初始化对象的过程中有的时候需要做一些额外的工作,例如需要初始化对象存储的数据,构造函数就是用于初始化数据的函数。
声明基本的构造函数的语法就是声明一个和所在类同名的方法,但是该方法没有返回类型。
public class MyClass{
public MyClass(){
这个构造函数的函数体
}
}
当我们使用new关键字创建类的时候,就会调用构造方法。
我们一般会使用构造方法进行初始化数据的一些操作。
构造函数可以进行重载,跟普通函数重载是一样的规则
注意:
当我们不写,任何构造函数的时候,编译器会提供给我们一个默认的 无参的构造函数,但是如果我们定义了一个或者多个构造函数,编译器就不会再提供默认的构造函数

对象

使用我们自定义的类声明的变量也叫做对象,这个过程也叫做实例化。

ClassName myClass = new ClassName();
其中ClassName是我们定义的类的名字,myClass是我们声明的变量(对象)的名字,后面的new是一个关键字,使用new 加上类型名()表示对该对象进行构造,如果不进行构造的话,这个对象是无法使用的。

猜你喜欢

转载自blog.csdn.net/euphorias/article/details/104921708