欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    第四讲 属性与方法精选文档.ppt

    • 资源ID:51802339       资源大小:2.18MB        全文页数:41页
    • 资源格式: PPT        下载积分:18金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要18金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第四讲 属性与方法精选文档.ppt

    第四讲 属性与方法本讲稿第一页,共四十一页8.18.1 属性的基本概念属性的基本概念 属性主要用于操控类的私有成员。大家知道,类的私属性主要用于操控类的私有成员。大家知道,类的私有成员只能在类的内部访问,这是类的封装性所确定的。有成员只能在类的内部访问,这是类的封装性所确定的。为向操作公共数据成员那样操作私有成员,就需要使用属为向操作公共数据成员那样操作私有成员,就需要使用属性。性。属性是一种用于访问对象或类特性的成员。它有访问属性是一种用于访问对象或类特性的成员。它有访问器,访问器实现对属性值的读取或写入操作。器,访问器实现对属性值的读取或写入操作。属性的访问器包括属性的访问器包括getget访问器和访问器和setset访问器访问器,前者用于获取,前者用于获取属性的值,后者用于给属性赋新值。属性的值,后者用于给属性赋新值。属性有两种存在形式,一是在公共语言运行库的基类中定义的属性有两种存在形式,一是在公共语言运行库的基类中定义的属性,另一种是可以创建的自定义属性。属性,另一种是可以创建的自定义属性。在此仅讨论第二种属性。在此仅讨论第二种属性。8 8 属性与方法属性与方法本讲稿第二页,共四十一页 自定义属性申明在类模块内,定义属性时需要指定属性的自定义属性申明在类模块内,定义属性时需要指定属性的访问级别、类型及属性的名称访问级别、类型及属性的名称,然后是申明,然后是申明getget访问器和访问器和setset访问器的代码块。访问器的代码块。相当于类的一种公共方法。相当于类的一种公共方法。下面定义一个下面定义一个DateDate类,在其中定义一个类,在其中定义一个dayday属性。属性。public class Date private int Day=7;public int day get8 8 属性与方法属性与方法本讲稿第三页,共四十一页 return Day;set Day=value;value value 是隐形参数,此参数是隐形参数,此参数的类型是属性类型的类型是属性类型8 8 属性与方法属性与方法本讲稿第四页,共四十一页8.28.2 属性的使用属性的使用 因属性定义在类的内部,是非静态方法,要访问属性,需要先实因属性定义在类的内部,是非静态方法,要访问属性,需要先实例化类的对象,并通过如下方式访问:例化类的对象,并通过如下方式访问:对象名对象名.属性名属性名 思考:思考:(1)(1)是否可以在类中定义和使用静态属性?在什么情况下可以考是否可以在类中定义和使用静态属性?在什么情况下可以考虑使用静态属性?虑使用静态属性?下面例子定义一个类,在类中定义两个下面例子定义一个类,在类中定义两个stringstring类型的变量,用于记类型的变量,用于记录用户名称和编号,然后在该类中自定义两个属性,用来操作用户编录用户名称和编号,然后在该类中自定义两个属性,用来操作用户编号和姓名。实例化类对象,利用属性改变类的私有变量的值。号和姓名。实例化类对象,利用属性改变类的私有变量的值。8 8 属性与方法属性与方法本讲稿第五页,共四十一页 class MyClass private string id=“”;private string name=“”;/定义用户编号属性定义用户编号属性 public string ID/属性名不能和私有变量同名属性名不能和私有变量同名 get 8 8 属性与方法属性与方法本讲稿第六页,共四十一页 return id;/返回和设置的一定是类的私有变量返回和设置的一定是类的私有变量 set id=value;/定义姓名属性定义姓名属性 public string Name 8 8 属性与方法属性与方法本讲稿第七页,共四十一页 get return name;set name=value;8 8 属性与方法属性与方法本讲稿第八页,共四十一页/实例化类对象使用属性实例化类对象使用属性 MyClass myclass=new MyClass();myclass.ID=“BH001”;myclass.Name=“TM”;messagebox.show(myclass.ID);messagebox.show(myclass.Name);8 8 属性与方法属性与方法本讲稿第九页,共四十一页8.38.3 方法方法 方法是类或结构的成员,是和类或结构相关联的动作。是根方法是类或结构的成员,是和类或结构相关联的动作。是根据类或结构的成员变量实现的操作。据类或结构的成员变量实现的操作。8.3.18.3.1方法的申明方法的申明 方法在类或结构中申明,申明时方法在类或结构中申明,申明时需要指定访问级别、返回值类需要指定访问级别、返回值类型、方法名称及方法参数,方法参数放在括号内,并用逗号隔型、方法名称及方法参数,方法参数放在括号内,并用逗号隔开。若括号中没有内容,表示申明的方法没有参数。开。若括号中没有内容,表示申明的方法没有参数。可访问一个成员的代码范围,叫做该成员的可访问区域可访问一个成员的代码范围,叫做该成员的可访问区域(accessibility domainaccessibility domain),访问修饰符用来控制所修饰成员),访问修饰符用来控制所修饰成员的可访问区域。的可访问区域。申明方法时需要注意访问修饰符用以控制方法申明方法时需要注意访问修饰符用以控制方法的存取限制。的存取限制。在此介绍在此介绍C#C#中有中有5 5种不同级别的修饰符。分别是种不同级别的修饰符。分别是public public、private private、protectedprotected、internalinternal,8 8 属性与方法属性与方法本讲稿第十页,共四十一页protected internalprotected internal,除最后一个外,指定一个以上的访问修饰符,除最后一个外,指定一个以上的访问修饰符,将导致编译错误。将导致编译错误。public:public:申明为申明为publicpublic的方法,可以允许任何外部类对其进的方法,可以允许任何外部类对其进行访问,即其访问不受限制。行访问,即其访问不受限制。private:private:与与publicpublic相反,相反,privateprivate对类方法的访问提供了最对类方法的访问提供了最大限制,方法只允许在定义它的类的内部被访问,若方法没大限制,方法只允许在定义它的类的内部被访问,若方法没有定义存取修饰符,则默认为有定义存取修饰符,则默认为privateprivate存取限制。存取限制。protected:protected:在基类和其派生类中才可以访问的方法。在基类和其派生类中才可以访问的方法。internal:internal:允许同一个组件里的类对其方法进行访问。允许同一个组件里的类对其方法进行访问。方法申明的返回类型指定了由该方法计算和返回值的类型,方法申明的返回类型指定了由该方法计算和返回值的类型,若方若方法无返回值,则其返回类型为法无返回值,则其返回类型为voidvoid。8 8 属性与方法属性与方法本讲稿第十一页,共四十一页方法的名称及其参数的数目、修饰符和类型定义了该方法的签名方法的名称及其参数的数目、修饰符和类型定义了该方法的签名(signaturesignature)。返回类型和形参名称均不是签名的组成部分。返回类型和形参名称均不是签名的组成部分。8.3.2 8.3.2 方法的分类方法的分类 方法分为静态方法和非静态方法。静态方法的声明中包含修方法分为静态方法和非静态方法。静态方法的声明中包含修饰符饰符staticstatic,不包含,不包含staticstatic修饰符的方法称为非静态方法。修饰符的方法称为非静态方法。静态方法和非静态方法的区别是,前者直接通过类名进行调静态方法和非静态方法的区别是,前者直接通过类名进行调用,后者需要通过类的实例化对象进行调用。用,后者需要通过类的实例化对象进行调用。8.3.3 8.3.3 方法的重载方法的重载 所谓方法重载指方法名相同,但各种方法中参数的数据类所谓方法重载指方法名相同,但各种方法中参数的数据类型、个数或顺序不同。只要类中有两个以上同名方法,但参型、个数或顺序不同。只要类中有两个以上同名方法,但参数类型、个数或顺序不同,调用时编译器能自动判断调用何数类型、个数或顺序不同,调用时编译器能自动判断调用何种方法。种方法。8 8 属性与方法属性与方法本讲稿第十二页,共四十一页例子:建立重载方法例子:建立重载方法add:public static int add(int x,int y)return x+y;public double add(int x,double y)return x+y;8 8 属性与方法属性与方法本讲稿第十三页,共四十一页 public int add(int x,int y,int z)return x+y+z;/在控件中进行调用在控件中进行调用 提问:分析该如何进行上述方法的调用?提问:分析该如何进行上述方法的调用?8 8 属性与方法属性与方法本讲稿第十四页,共四十一页 本章讲述的重点:本章讲述的重点:结构的基本概念结构的基本概念 结构的用途及使用方法结构的用途及使用方法 面向对象技术的基本概念面向对象技术的基本概念 类的基本概念类的基本概念 类的构造函数和协构函数的使用类的构造函数和协构函数的使用 对象的申明和实例化对象的申明和实例化 对象的封装、继承和多态对象的封装、继承和多态9 9 结构和类结构和类本讲稿第十五页,共四十一页9.19.1 结构概述结构概述 结构是一种值类型,用于封装一组相关的变量,结构中可结构是一种值类型,用于封装一组相关的变量,结构中可以包含构造函数、常量、变量字段、方法和属性、运算符、以包含构造函数、常量、变量字段、方法和属性、运算符、事件和嵌套类型。事件和嵌套类型。结构具有以下特点:结构具有以下特点:结构是值类型;结构作为方法的参数时,结构是值类型;结构作为方法的参数时,需通过传值方需通过传值方式传递,而非引用方式传递;结构的实例化可以不用式传递,而非引用方式传递;结构的实例化可以不用newnew运运算符;结构可以申明构造函数,但需要带参数;一个结构不算符;结构可以申明构造函数,但需要带参数;一个结构不能从另一个结构或类继承,所有的结构都继承自能从另一个结构或类继承,所有的结构都继承自System.ValueTypeSystem.ValueType,而后者继承自,而后者继承自System.Object;System.Object;结构结构可以实现接口;可以实现接口;在结构中不能初始化实例字段。在结构中不能初始化实例字段。9 9 结构和类结构和类本讲稿第十六页,共四十一页在在C#C#中用关键字中用关键字structstruct声明结构:声明结构:存取修饰符存取修饰符 struct struct 结构名结构名 举例:举例:public struct Rect public double width;public double height;9 9 结构和类结构和类本讲稿第十七页,共四十一页 public double Area()return width*height;/结构的使用,需要先实例化结构,然后就可以给结构中结构的使用,需要先实例化结构,然后就可以给结构中的成员变量赋值,并调用结构中的方法操作成员变量得到一的成员变量赋值,并调用结构中的方法操作成员变量得到一定结果。定结果。举例:举例:9 9 结构和类结构和类本讲稿第十八页,共四十一页 Rect rect1;/实例化结构实例化结构 rect1.width=5.2;rect1.height=3.8;messagebox.show(rect1.Area().ToString();/也可以使用也可以使用newnew关键字实例化结构对象。关键字实例化结构对象。9 9 结构和类结构和类本讲稿第十九页,共四十一页9.2 9.2 类类1 1 面向对象的编程技术面向对象的编程技术(OOPOOPobject-oriented object-oriented programmingprogramming)将算法与数据结构看做一个整体,称为对象。将)将算法与数据结构看做一个整体,称为对象。将一个大的系统分割为很多模块,每个模块完成一定的功能,并彼此一个大的系统分割为很多模块,每个模块完成一定的功能,并彼此相互独立。这样的模块,在面向对象编程中被定义为类。相互独立。这样的模块,在面向对象编程中被定义为类。现实世现实世界中的对象均有属性和方法,在定义类的时候,对应成员界中的对象均有属性和方法,在定义类的时候,对应成员变量和成员函数变量和成员函数。面向对象编程具有封装、继承和多态等特点。面向对象编程具有封装、继承和多态等特点。(1 1)封装:封装:类是属性和方法的结合,当为实现某些功能而定类是属性和方法的结合,当为实现某些功能而定义类后,开发人员并不需要了解类内部每条代码的具体含义,义类后,开发人员并不需要了解类内部每条代码的具体含义,只需通过对象来调用类内部的属性或方法,以实现某项功能。只需通过对象来调用类内部的属性或方法,以实现某项功能。9 9 结构和类结构和类本讲稿第二十页,共四十一页(2 2)继承:继承:通过继承可以创建子类(派生类)和父类之间的层次通过继承可以创建子类(派生类)和父类之间的层次关系,子类从其父类中继承属性和方法,这种模型,可以提高程关系,子类从其父类中继承属性和方法,这种模型,可以提高程序的开发效率。序的开发效率。(3 3)多态:多态:指不同的类进行同一操作,可以有不同的行为。指不同的类进行同一操作,可以有不同的行为。2 2 类的概念类的概念 类是具有相同对象的集合,描述了在概念上具有相同含义类是具有相同对象的集合,描述了在概念上具有相同含义的对象,并为这些对象统一定义了属性和方法。的对象,并为这些对象统一定义了属性和方法。3 3 类的申明类的申明 C#C#中类是用中类是用classclass关键字来声明,语法如下:关键字来声明,语法如下:9 9 结构和类结构和类本讲稿第二十一页,共四十一页 类修饰符类修饰符 class 类名类名 举例:举例:public class Car public int number;/编号编号 public string color;/颜色颜色 public string brand;/厂家厂家 9 9 结构和类结构和类本讲稿第二十二页,共四十一页对类修饰符的说明:对类修饰符的说明:new:new:在派生类时,若子类中有与其父类同名的成员,需要在派生类时,若子类中有与其父类同名的成员,需要在声明子类的同名成员时,在返回值类型前加在声明子类的同名成员时,在返回值类型前加newnew关键字。关键字。class lee1 public string GetStr()9 9 结构和类结构和类本讲稿第二十三页,共四十一页 class lee2:lee1 public new string GetStr()public public:不限制对该类的访问;不限制对该类的访问;protected:protected:只能从其所在的类或所在类的子类进行访问。只能从其所在的类或所在类的子类进行访问。9 9 结构和类结构和类本讲稿第二十四页,共四十一页internal:internal:只有其所在的类才能访问。只有其所在的类才能访问。abstract:abstract:抽象类,不能建立类的实例。抽象类,不能建立类的实例。private:private:在类的内部可以访问,或在类的内部可以访问,或.NET.NET的应用程序或库才能的应用程序或库才能访问。访问。sealed:sealed:密封类,不允许被继承。密封类,不允许被继承。4 4 构造函数和协构函数构造函数和协构函数 是类中比较特殊的两个函数,用于对类对象进行初始化和是类中比较特殊的两个函数,用于对类对象进行初始化和回收对象资源。对象生命周期从构造函数开始到协构函数结束。回收对象资源。对象生命周期从构造函数开始到协构函数结束。构造函数的名字与类同名,协构函数的名字与类名相同,但需构造函数的名字与类同名,协构函数的名字与类名相同,但需要在名字前加要在名字前加“”。9 9 结构和类结构和类本讲稿第二十五页,共四十一页举例:举例:class Lee1 public int x=3;public int y=5;public int z=0;public Lee1()z=x+y;9 9 结构和类结构和类本讲稿第二十六页,共四十一页 lee1()messagebox.show(“协构函数自动调用!协构函数自动调用!”)5 5 对象的声明和实例化对象的声明和实例化 在在C#C#中对象是类的一个实例,通过中对象是类的一个实例,通过newnew关键字创建类对象。关键字创建类对象。9.3 9.3 类的面向对象特性类的面向对象特性1 1 封装封装 C#C#中使用类实现对数据的封装,将数据和方法封装为一中使用类实现对数据的封装,将数据和方法封装为一9 9 结构和类结构和类本讲稿第二十七页,共四十一页 个单元,并采用适当的方式控制数据的存取,以及数据的存取权个单元,并采用适当的方式控制数据的存取,以及数据的存取权限。限。class MyClass1 private int x=0;private int y=0;public int X /定义属性定义属性 get return x;setx=value;9 9 结构和类结构和类本讲稿第二十八页,共四十一页 public int Y getreturn y;sety=value;class MyClass2 MyClass1 myclass1=new MyClass1();9 9 结构和类结构和类本讲稿第二十九页,共四十一页 public int Add()return myclass1.X+myclass1.Y;/使用定义的类使用定义的类 MyClass1 myclass1=new MyClass1();MyClass2 myclass2=new MyClass2();myclass1.X=3;myclass1.Y=5;9 9 结构和类结构和类本讲稿第三十页,共四十一页 messagebox.show(myclass2.Add();在上述例子中,运行的结果为在上述例子中,运行的结果为0.0.请大家分析是什么原因?请大家分析是什么原因?2 2 类的继承类的继承 在在C#C#中只允许一次继承一个类中只允许一次继承一个类。父类中的私有成员不能被其子。父类中的私有成员不能被其子类所访问。为解决这一问题,可以使用存取权限修饰符类所访问。为解决这一问题,可以使用存取权限修饰符protectedprotected,被该修饰符修饰的成员在基类中和其子类中均可以被访问被该修饰符修饰的成员在基类中和其子类中均可以被访问。可以在继承类的基础上,添加、修改或替换类中的方法,可以在继承类的基础上,添加、修改或替换类中的方法,实现对类的扩充,在实际工作中可以大大提高编程效率。实现对类的扩充,在实际工作中可以大大提高编程效率。9 9 结构和类结构和类本讲稿第三十一页,共四十一页 类继承中,类继承中,基类中的成员可以是虚拟的基类中的成员可以是虚拟的,虚拟成员可以由继承它的虚拟成员可以由继承它的类重写类重写,即在派生类中可以提供成员的其它执行代码。,即在派生类中可以提供成员的其它执行代码。基类还基类还可以定义为抽象类,抽象类不能被直接实例化,可以使用抽象类派可以定义为抽象类,抽象类不能被直接实例化,可以使用抽象类派生子类,再对子类进行实例化生子类,再对子类进行实例化。举例:举例:class MyClass1 private int x=0;private int y=0;public int X 9 9 结构和类结构和类本讲稿第三十二页,共四十一页 getreturn x;setx=value;public int Y getreturn y;set(y=value;9 9 结构和类结构和类本讲稿第三十三页,共四十一页 public int Add1()return X+Y;class MyClass2:MyClass1 private int z=0;public int Z 9 9 结构和类结构和类本讲稿第三十四页,共四十一页 get return z;set z=value;public int Add2()return X+Y+Z;/使用类使用类 MyClass1 myclass1=new MyClass1();MyClass2 myclass2=new MyClass2();9 9 结构和类结构和类本讲稿第三十五页,共四十一页 myclass1.X=3;myclass1.Y=5;myclass2.X=3;myclass2.Y=5;myclass2.Z=7;messagebox.show(myclass1.Add1().ToString();messagebox.show(myclass2.Add1().ToString();messagebox.show(myclass2.Add2().ToString();9 9 结构和类结构和类本讲稿第三十六页,共四十一页 (3 3)类的多态)类的多态 多态使得子类(派生类)的实例可以直接赋给基类的变量,多态使得子类(派生类)的实例可以直接赋给基类的变量,然后可以通过这个变量调用子类的方法。然后可以通过这个变量调用子类的方法。类的多态性是通过在子类中重载基类的虚方法或函数成员来实现的。类的多态性是通过在子类中重载基类的虚方法或函数成员来实现的。举例:举例:class MyClass1 private int x=0;private int y=0;9 9 结构和类结构和类本讲稿第三十七页,共四十一页 public int X getreturn x;setx=value;public int Y getreturn y;sety=value;9 9 结构和类结构和类本讲稿第三十八页,共四十一页 public virtual int Add()return X+Y;class MyClass2:MyClass1 public override int Add()int x=5;9 9 结构和类结构和类本讲稿第三十九页,共四十一页 int y=7;return x+y;/使用类使用类 MyClass2 myclass2=new MyClass2();MyClass1 myclass1=(myclass1)myclass2;myclass1.X=3;myclass1.Y=5;9 9 结构和类结构和类本讲稿第四十页,共四十一页 messagebox.show(myclass2.Add().ToString();/调用派生类中的方法调用派生类中的方法 messagebox.show(myclass1.Add().ToString();/调用派生类中的方法调用派生类中的方法 也可以使用也可以使用newnew关键字实现方法重写。请同学们试试,看有何关键字实现方法重写。请同学们试试,看有何差别!差别!9 9 结构和类结构和类本讲稿第四十一页,共四十一页

    注意事项

    本文(第四讲 属性与方法精选文档.ppt)为本站会员(石***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开