c#初级学习_面向对象编程
面向对象
存储区域
在 C# 中,存储区域主要包括堆、栈和静态存储区域:
- 堆:用于存储动态分配的内存,例如通过关键字
new
创建的对象。堆内存由垃圾回收器自动管理释放。 - 栈:用于存储局部变量和方法调用的执行环境。栈内存的分配和释放是由编译器自动处理的,遵循先进后出的原则。
- 静态存储区域:用于存储静态变量和静态方法。静态存储区域在程序运行期间一直存在,直到程序结束才会被释放。
类的定义与实例化
类是面向对象编程的核心概念,在 C# 中可以使用 class
关键字定义类,如下所示:
public class MyClass
{
// 类的成员变量
public int myVariable;
// 类的构造函数
public MyClass(int value)
{
myVariable = value;
}
// 类的成员方法
public void MyMethod()
{
Console.WriteLine("MyMethod is called!");
}
}
类的实例化可以通过关键字 new
来完成:MyClass myObject = new MyClass(10);
方法与静态方法
方法是类中定义的行为,可以在对象上执行特定的操作。静态方法属于类本身,不依赖于类的实例,并且可以直接通过类名调用。
示例代码如下:
public class MyClass
{
// 实例方法
public void MyMethod()
{
Console.WriteLine("Instance method is called!");
}
// 静态方法
public static void MyStaticMethod()
{
Console.WriteLine("Static method is called!");
}
}
MyClass myObject = new MyClass();
myObject.MyMethod(); // 调用实例方法
MyClass.MyStaticMethod(); // 调用静态方法
构造函数与new关键字
构造函数是在创建对象时自动调用的特殊方法,用于对对象进行初始化。在 C# 中,构造函数与类的名称相同且没有返回类型。
示例代码如下:
public class MyClass
{
public int myVariable;
// 构造函数
public MyClass(int value)
{
myVariable = value;
}
}
MyClass myObject = new MyClass(10); // 使用构造函数创建对象并初始化
this关键字与析构函数
this
关键字代表当前对象的实例,常用于区分参数和成员变量的同名情况。
析构函数是在对象销毁时自动调用的特殊方法,用于释放资源和清理操作。在 C# 中,析构函数使用 ~ClassName
的形式定义。
示例代码如下:
public class MyClass
{
public int myVariable;
public MyClass(int value)
{
this.myVariable = value;
}
~MyClass()
{
// 执行清理操作
}
}
new 关键字 MyClass myObject = new MyClass(10);
面向对象 继承
继承是面向对象编程中的重要概念,它允许一个类继承另一个类的属性和方法,并可以进行拓展和修改。
在 C# 中,可以使用 :
来指定一个类继承另一个类:
public class MyBaseClass { public void BaseMethod() { Console.WriteLine("BaseMethod is called!"); } } public class MyDerivedClass : MyBaseClass { public void DerivedMethod() { Console.WriteLine("DerivedMethod is called!"); } } MyDerivedClass myObject = new MyDerivedClass(); myObject.BaseMethod(); // 调用继承自基类的方法 myObject.DerivedMethod(); // 调用派生类自己的方法
面向对象 多态:
使得一个对象展现出多种状态,不同的子类可以对同一个方法进行不同的实现。通过父类引用指向子类对象,实现多态性。
虚方法:将父类的方法标记为虚方法,该函数会被子类重写。在父类中使用关键字virtual修饰方法,子类可以使用关键字override对其进行重写。通过父类引用指向子类对象时,调用的是子类重写后的方法。
接口:接口是一种规范,定义了一组成员(方法、属性、索引器、事件),类可以实现一个或多个接口。接口中的成员都是公共的,默认为public,不允许有字段和构造函数。一个类实现接口时必须实现接口中所有的成员。接口与接口之间可以继承,一个类可以同时继承一个类并实现多个接口。
抽象类:当父类中的方法不清楚如何实现时,可以将父类定义为抽象类。抽象类使用关键字abstract修饰,不能被实例化。抽象类中可以包含抽象方法,抽象方法使用关键字abstract修饰,没有方法体。子类继承抽象类时必须实现抽象方法。
部分类:使用partial关键字可以将一个类分为多个部分,每个部分可以在不同的文件中,但是彼此之间必须是同一个命名空间。部分类的成员互通,但不能有重复的方法。
密封类:使用sealed关键字修饰的类为密封类,不能被继承,但可以继承其他类。
集合类
引用类型与值类型
在 C# 中,变量可以分为引用类型和值类型:
引用类型:引用类型变量存储的是对象的引用,在堆中分配内存。例如,类、字符串等都是引用类型。
值类型:值类型变量直接存储数据的值,在栈中分配内存。例如,整数、浮点数等基本类型都是值类型。
示例代码如下:
string referenceType = "Hello";
int valueType = 10;
集合与ArrayList
集合是 C# 中用于存储和操作一组数据的容器,提供了丰富的功能和方法。
ArrayList
是一个动态数组,可以用来存储多种类型的对象。可以使用 Add
方法向 ArrayList
添加元素,并使用索引访问元素。
示例代码如下:
ArrayList myArrayList = new ArrayList();
myArrayList.Add("Hello");
myArrayList.Add(10);
Console.WriteLine(myArrayList[0]); // 访问第一个元素
Console.WriteLine(myArrayList[1]); // 访问第二个元素
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)