![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C#面向对象程序设计
积沙成塔——
这个作者很懒,什么都没留下…
展开
-
C# 虚方法
虚方法的作用是实现多态性,即同一个方法可以在不同的对象上产生不同的行为。这样可以使程序更加灵活,可以根据需要在运行时动态地确定调用哪个方法。虚方法也可以用于实现基类和派生类之间的协作,派生类可以在不破坏基类的情况下扩展基类的功能。在C#中,虚方法是一种允许子类重写的方法。原创 2023-04-06 17:09:44 · 818 阅读 · 0 评论 -
C# 静态类
静态类通常用于定义一些工具类或者全局变量,例如Math、Console等都是静态类。静态类还可以用于实现单例模式,确保只有一个实例被创建。静态类是一个特殊的类,它只包含静态成员,无法被实例化。静态类的成员必须是静态的,不能包含实例成员,也不能包含构造函数(因为无法实例化)。使用静态类时,可以直接通过类名和成员名访问静态成员,无需创建类的实例。在C#中,声明静态类需要使用关键字“static”来修饰类名。原创 2023-04-06 09:57:12 · 926 阅读 · 0 评论 -
C# 枚举
在C#中,枚举可以在类的内部或类的上方声明。如果在类的内部声明,则枚举只能在该类中使用。如果在类的上方声明,则枚举可以在该类以及其他类中使用。在上面的示例中,DaysOfWeek枚举可以在该类以及其他类中使用,而Colors枚举只能在MyClass类中使用。其中,EnumName为枚举类型的名称,Value1、Value2、Value3等为枚举成员的名称。原创 2023-04-06 00:34:26 · 352 阅读 · 0 评论 -
C# 结构体
C#中的结构体(Struct)是一种轻量级的数据类型,用于存储数据。与类(Class)不同,结构体是一种值类型,即在赋值或传递参数时是按值传递的,而不是按引用传递的。需要注意的是,由于结构体是按值传递的,将结构体作为参数传递给方法时会复制一份结构体的值,因此在方法中修改结构体的成员不会影响原始结构体的值。结构体的声明和使用方式与类相似。其中,Name为结构体的名称。原创 2023-04-06 00:46:11 · 560 阅读 · 0 评论 -
C#接口基础知识重构
7.)接口可以被彼此继承,如果这个一个类继承了接口的子类接口,那么需要将这个接口并且这个接口继承的父类接口里面的所有成员都重新实现。(2.)接口包含方法、属性、事件和索引器,但不能包含字段(抽象类都包括)(6.)接口提供了一个向下的标准,使得实现接口的类在结构形式上保持一致。(5.)继承接口的类,必须实现接口的所有成员(成员变量及成员方法)(1.)接口名需要大写字母"I"开头,表名它是接口类型。(4.)接口中的成员不允许加任何访问修饰符。(3.)接口中定义的成员不允许有方法体。......原创 2022-07-21 11:51:32 · 166 阅读 · 0 评论 -
第七章节 类的抽象(抽象类和接口的区别)
一.抽象类和接口的区别在C#中抽象类和接口在使用上有很多相同点,如两者都不能实例化,都可以包含未实现的方法,其子类必须实现其未实现的所有方法,但在定义时有很大的区别。抽象类和接口语法的区别见下表:抽象类接口使用abstract关键字修饰使用interface关键字修饰可以包含字段和已实现的成员不能有字段,只能包含未实现的成员子类通过override实现抽象方法子类直接实现所有成员...原创 2021-12-13 12:07:57 · 339 阅读 · 0 评论 -
第七章节 类的抽象(接口)
一.接口1.通过学习继承可以知道,C#中一个类只能有一个父类,如果一个类需要具有多个类的行为或特征,那么可以通过接口来实现。C#中的接口用于约束类的行为。2.自定义接口的语法如下:[访问修饰符] interface 接口名 { //接口的方法定义语法如下 void Show();}自定义接口需要注意以下5点:(1.)接口名需要大写字母"I"开头,表名它是接口类型(2.)接口包含方法、属性、事件和索引器,但不能包含字段(3.)接口中定义的成员不允许有方法体(4.)接口中的成员不允许加任原创 2021-12-13 01:33:31 · 528 阅读 · 0 评论 -
第七章节 类的抽象(抽象类)
一.抽象类1.抽象类可以看做对类的抽象。抽象类的用途是提供一个可供多个派子生类共享的通用基类定义2如果一个类中没有包含足够能描述具体对象的信息,那么就称其为抽象类。3.在C#中抽象类使用“abstract关键字修饰”语法如下:abstract class Animal{}以下写一个案例进行知识点解析:(1.)定义父类电器类,因为所有电器都能充电,所以类中定义充电方法,但电器只是抽象的概念,因此充电方法无法实现,只能定义为抽象方法。注意:抽象方法也要用“abstract”关键字修饰 ,并且原创 2021-12-13 01:02:58 · 719 阅读 · 0 评论 -
第六章节 多态 (密封类)
一.密封类1.密封类使用sealed关键字修饰,不能作为父类,因此,密封类主要用于防止派生子类。2.由于密封类不能被继承,所以类中的方法不能定义为虚方法。3.sealed关键字,修饰方法这个方法只能被子类继承,不能被子类拿去重写4.virtual关键字只能修饰方法,不能修饰变量注意:sealed修饰方法只能与override一起使用,这样才可以防止重写的方法再次被重写...原创 2021-12-12 22:14:28 · 210 阅读 · 0 评论 -
第六章节 多态 (多态的概述)
一.多态的实现1.在面向对象思想中,多态的主要表现形式是:子类继承父类后对于同一个方法有不同的实现方式,多态的实现方式有两种:隐藏父类方法和重写父类方法(1.)接下来先讲解使用new关键字隐藏父类方法来达到多态的目的,看如下代码: class Animal { public void Show() { Console.WriteLine("发出了尖叫声"); } }class Bird:Animal {原创 2021-12-12 21:53:13 · 594 阅读 · 0 评论 -
第五章节 类的继承(访问修饰符)
一.访问修饰符1.C#中有五种访问修饰符:public、private、protected、internal和protected internal,其具体说明见下表:访问修饰符说明public公共的,访问不受限制private私有的,只有本类内部访问protected受保护的,只能在本类及其子类访问internal内部的,只限于本项目内成员访问protected internal内部保护的,只限于本项目或子类访问2.类的一些注意点(1.)类的原创 2021-12-12 21:10:47 · 182 阅读 · 0 评论 -
第八章节 文件操作一 (文件夹常用操作)
1.文件夹常用操作1.文件夹管理是操作系统的重要组成部分,主要包括移动、复制、创建、删除等操作。2. .NET提供了Directory类和DirectoryInfo类用于对磁盘和文件夹进行常用操作管理。3. 对文件夹进行少量的操作时,一般使用Directory类,Directory类是静态的,其中所有方法都是静态的,直接通过类名调用即可,不需要进行实例化。2.Directory常用方法见表方法说明Exists()用于检查指定文件夹是否存在CreateDirectory(原创 2021-12-06 20:36:07 · 447 阅读 · 0 评论 -
第八章节 文件操作一 (文件常用操作)
1.文件常用操作1.文件管理是操作系统的重要组成部分,主要包括移动、复制、创建、删除等操作。2. .NET提供了File类和FileInfo类用于对文件进行常用操作管理。3. 对文件进行少量的操作时,一般使用File类,File类是静态的,其中所有方法都是静态的,直接通过类名调用即可,不需要进行实例化。2.File类常用方法见表方法功能说明Exists()用于检查指定文件是否存在Copy()将现有文件复制到新文件中Move()将指定文件移动到新位置Del原创 2021-12-06 20:15:42 · 380 阅读 · 0 评论 -
第八章节 文件操作一 (文件对话框)
1.文件对话框openFIleDialog和saveFileDialog的使用方式一模一样,就是功能上面有所区别2.文件常用操作原创 2021-12-06 11:29:39 · 46 阅读 · 0 评论 -
第五章节 类的继承(继承的概述)
一.继承概述1.继承是指子类可以继承父类可被继承的属性、字段和方法等,然后只需要再定义属于自己独特的成员即可 (这里的成员代表的是:成员变量和成员方法)2.:表示继承关系,如下代码,一个鸟类继承了动物类class Bird:Animal{//Bird后面的:号表示继承关系的符号}二.继承的实现1.继承的三大特性(1.)继承的传递性。 大雁继承与鸟类,鸟类继承于动物类,那么大雁不仅具有鸟类的特征和行为而且还具有动物类的特征和行为(2.)继承的单根性。 一个之类只能有一个父类,一个父类可以原创 2021-12-05 02:22:53 · 434 阅读 · 0 评论 -
第四章 泛型
1.泛型集合List< T >1.在使用的时候必须先导入以下命名空间,才能使用泛型集合: using System.Collections.Generic2.List< T >泛型集合与ArrayList集合的使用方式完全一样,唯一的区别在于定义时必须指定集合中存储的数据类型,既增强了类型的安全性,又可以省去在访问的时候进行数据类型转换的麻烦操作3.List< T >泛型集合只能存放同一组数据类型,ArrayList可以存放任何数据类型4.List< T原创 2021-12-04 23:40:52 · 124 阅读 · 0 评论 -
C#foreach循环的优点
1.C#foreach循环在处理集合和数组相对于for循环存在以下4个优势:(1.)foreach语句更加简洁。(2.)foreach循环效率比for循环要高(C#是强类型检查,for循环对数组进行访问时,要对索引的有效值进行检查)(3.)不用关心数组的起始索引是什么和索引边界值,就不会导致索引越界的情况(因为许多开发者是从其他语言转到C#的,有些语言的起始索引可能是1或者是0)(4.)处理多维数组更加方便(不包括锯齿数组)...原创 2021-12-01 00:16:22 · 569 阅读 · 0 评论 -
第三章节 集合类
1.集合概述1.集合的主要特性(1.)可以动态地改变大小(2.)可以存储任意数据类型的对象(3.)提供一系列操作集合中对象的属性和方法集合相比数组要好很多下面就是数组的特性 可以用来比较2.数组的特性(1.)只能存放指定的数据类型的数据(2.)固定长度(3.)提供一系列操作数组的属性和方法2.ArrayList集合1.ArrayList集合特性(1.)动态数组(2.)可存放任何数据类型对象(3.)任何对象存储到ArrayList集合中都会自动转换成Object数据的类型,所原创 2021-11-30 20:42:37 · 460 阅读 · 0 评论 -
第二章节 封装
1.定义属性1.C#中的属性作用是进行数据筛选,来给私有字段赋值和读取私有字段的值,这样大大提高了字段访问的安全性和灵活性2.私有字段、私有属性和私有方法,只能在本类中调用,不能再其他类中调用。//访问Age属性的时候,实际访问的是age字段的值//给Age属性赋值的时候,实际是给age字段赋值 private int age; public int Age { get { return age; } //访问Age属性的时候,实际访问的是原创 2021-11-30 19:23:20 · 76 阅读 · 0 评论 -
第一章节 c#面向对象
c#面向对象面向对象的思想精髓(封装、继承、多态)面向对象编程指先用面向对象的思想进行分析,然后用面向对象的编程语言进行翻译过程类中包括描述特征的成员变量和描述行为的成员方法如果类中有静态变量或者静态方法那么这个静态变量和静态方法被这个类的所有对象共有静态变量和静态方法,如果访问修饰符是public那么就可以在其他类中直接使用 类名.静态成员 进行调用,如果是私有的则不允许在其他类中调用成员变量和成员方法,想要在其他类中使用,则需要实例化之后通过实例化的对象名.成员 去进行调用...原创 2021-11-30 19:02:10 · 67 阅读 · 0 评论