收藏 分销(赏)

精讲C#中的要点演示教学.ppt

上传人:人****来 文档编号:10611139 上传时间:2025-06-05 格式:PPT 页数:41 大小:286KB 下载积分:12 金币
下载 相关 举报
精讲C#中的要点演示教学.ppt_第1页
第1页 / 共41页
精讲C#中的要点演示教学.ppt_第2页
第2页 / 共41页


点击查看更多>>
资源描述
*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,面向对象程序设计(C#),面向对象程序设计 C#,第九章 定义类,主要内容,类定义相关语法,类的定义,构造函数与析构函数,其它相关主题,类的定义,使用,class,关键字来定义类:,class /,类的成员,类的成员(,Member,)的定义,成员的访问限定符,数据成员(字段)的定义,函数成员(方法)的定义,构造函数与析构函数的定义,属性(方法)的定义,类定义中可以使用的访问修饰符,修饰符,含义,无或internal,类只能在当前项目中访问,public,类可以在任何地方访问,abstract或internal abstract,类只能在当前项目访问,不能实例化,只能继承,public abstract,类可以在任何地方访问,不能实例化,只能继承,sealed或internal sealed,类只能在当前项目中访问,不能派生,只能实例化,public sealed,类可以在任何地方访问,不能派生,只能实例化,成员访问(,Accessibility,)限定符,public,:Member is accessible,from any code;,private,:Member is accessible,only from,code that is part of the class,(the default if no keyword is used);,internal,:Member is accessible,only from code within the project,(assembly)where it is defined;,protected,:Member accessible,only from code that is part of either the class or a derived class;,Protected internal,数据成员(,Field,)的定义,class ;,其他修饰符:,static、readonly、const、,volatile,Modifier,static,:表示类的静态字段,可通过定义它们的类来访问,不能用对象实例访问。,readOnly,:表示这个字段只能在执行构造函数的过程中赋值,或由初始化赋值语句赋值。,Modifier,Const,:指定字段或局部变量的值是常数,不能被修改,Volatile:类型修饰符(type specifier),被设计用来修饰被不同线程访问和修改的变量;,数据成员(,Field,)的初始化,在数据成员的定义语句中进行初始化;,运行时初始化(类的新对象被创建时);,可用于静态数据成员的初始化方法;,在实例构造函数(Constructors)中初始化;(推荐),函数成员(,Method,)的定义,class 函数体,其他修饰符,Static:只能通过类访问,无法通过对象实例访问;,Virtual:方法可以重写,Abstract:方法必须在非抽象的派生类中重写(只用于抽象类),override(sealed):方法重写了一个基类方法(如果方法被重写,就必须使用该关键字),Extern:方法定义放在其他地方,构造函数与析构函数(,Constructors and Destructors,),构造函数与析构函数是类的两种特殊的函数成员,分别用于对象的初始化和清理。,构造函数要求与所在的类同名,无返回值,如:,构造函数与析构函数(,Constructors and Destructors,),构造函数允许重载,如果在代码中没有提供,编译器会自动添加一个默认的构造函数。,而析构函数使用带有前缀的类名来声明,无参无返回值。如:析构函数不允许重载。,静态构造函数,静态构造函数在以下情形下被自动调用:,对应类的第一个实例被创建时;,对应类的任何一个静态成员第一次被引用时。,静态构造函数用于初始化类的静态成员。,关于,Finalize,Finalize方法允许,Object,在“垃圾回收”回收,Object,之前尝试释放资源并执行其他清理操作。,默认情况下,Object.Finalize 不执行任何操作,。,只有在必要时才必须由派生类重写它。派生类型中的每个 Finalize 实现都必须调用其基类型的 Finalize 实现。这是唯一一种允许应用程序代码调用 Finalize 的情况。,c#析构函数是执行清理操作的 C#机制。析构函数提供了适当的保护措施,如自动调用基类型的析构函数。在 C#代码中,不能调用或重写 Object.Finalize。,类的属性(Property)的定义,class get 读取属性值部分函数体 set 设置属性值部分函数体,属性实际上实现了OOP的封装性,类的属性(Property)的定义,只读/只写属性,自动完成属性(C#3.0),类的属性(Property)的定义,类的属性(Property)的定义,比较OOP与非OOP,比较OOP与非OOP,类定义中的访问修饰符,内部类与公共类,在默认情况下,不加修饰符或显式使用,internal,关键字来定义,内部类,。,内部类只允许被同一个项目中的代码访问。,要让其他项目中的代码来访问,必须使用关键字,public,,,即定义为,公共类,。,注意以下代码将不能编译,internal class MyBase /Class members.public class MyClass:MyBase /Class members.,类的继承-派生类的定义,定义派生类的语法结构如下:,class,:,/,派生类特有的成员,C#,不支持,多重继承,即:在C#中,,一个类至多只能有一个基类,。,基类成员在派生类中的可访问性,在基类中的可访问性,在派生类中的可访问性,private,(,inaccessible,),public,public,protected,protected,protected,关键字,protected,关键字是一个成员访问修饰符。受保护成员在它的类中可访问并且可由派生类访问。,注意,只有在通过派生类类型发生访问时,基类的受保护成员在派生类中才是可访问的。,派生类对象的实例化,为了实例化派生类,必须首先实例化它的基类部分。以此递推,最先被实例化的应该是,System.Object,类。,从本质上看,要创建派生类的对象,首先应通过调用基类的构造函数完成对,由基类继承而来的数据成员的初始化,,然后再执行自身的构造函数完成本类扩展成员的初始化。,派生类对象的实例化,默认情形下,会依次调用以下构造函数,1、System.Object.Object(),2、MyBaseClass.MyBaseClass(),3、MyDerivedClass,的构造函数具体调用的重载版本取决于以何种方式来实例化,MyDerivedClass,(new语句),派生类对象的实例化,如果希望被调用的不是基类的默认构造函数(即无参版本),则可以使用,构造函数初始化器,,它会先于所在的构造函数被执行,格式如下:,public DerivedClass(paramlist1):base(paramlist2),其中,base关键字用于指代当前实例对应的基类对象,从而调用基类的对应构造函数。,派生类对象的实例化,构造函数初始化器还可以使用,this,关键字,实现在调用指定的构造函数前,先调用其他非默认的构造函数。,实际上默认的派生类构造函数等价于:,public MyDerivedClass():base(),派生类对象的析构,考虑一个当一个派生类对象将要被销毁时,其析构函数的调用顺序?,试一试,类的继承结构,VS2008中的OOP工具,类视图,类视图中的图标,对象浏览器,类视图(Class View),查看应用程序中的类层次结构,查看项目引用的程序集,查找代码中的类型和成员,重命名代码中的项,类视图中的图标,对象浏览器(Object Browser),类图(Class Diagrams),往项目中添加新类,创建类图,结构类型,类与结构非常相似,但结构是值类型,类是引用类型。,结构成员无法受保护,因为无法继承结构。,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服