收藏 分销(赏)

面向对象编程基础说课材料.ppt

上传人:人****来 文档编号:10281649 上传时间:2025-05-14 格式:PPT 页数:75 大小:696KB
下载 相关 举报
面向对象编程基础说课材料.ppt_第1页
第1页 / 共75页
面向对象编程基础说课材料.ppt_第2页
第2页 / 共75页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,*,第3章 面向对象编程基础,1.理解基本概念,2.理解,类,3.使用构造函数,4.学习,方法,5.学习,属性,掌握,1,姓名、性别、年龄等:属性,学习课程、参加社会活动:方法,3.1 面向对象编程概念,1.,对象,具有属性和操作(方法)的实体。,属性:对象所处的状态,方法:用于改变对象状态以达到特定的功能,对象有一个唯一的标识名,2.,类,在对象之上的抽象,一种抽象的数据类型,3.类是对象的模板,对象是类的具体化或类的实例,示例:,学生类,各位同学对象,2,对象 与 类,属性,型号,价格,里程,行为,起动,停车,行驶,属性,车轮数量,档的数量,行为,加速,换档,刹车,属性,名称,颜色,品种,行为,摇尾巴,吃东西,犬 吠,3,面向对象程序设计在处理对象时,必须遵循的三个原则:,1封装,用一个框架把数据和代码组合在一起,形成一个对象。,类是支持对象封装的工具,对象则是封装的基本单元。,2继承,利用继承可以创建分等级层次的类,继承是父类和子类之间共享数据和方法的机制,通常把父类称为基类,子类称为派生类。,单继承:一个基类可以有任意数目的派生类,即 一父多子多继承:一个类若有两个或两个以上的直接基类,即一子多父,称为多重继承,C#通过接口来实现,3多态性,同一个操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。分为静态多态和动态多态,根据参数的差别,直接调用,对象方法,根据基类,间接调用,对象方法,4,3.2 类,3.2.1 类的声明,语法形式:,属性集信息 类修饰符 class 类名:类基,类主体,属性集信息是C#语言为程序中定义的各种实体附加一些说明信息,是C#语言的一个重要特征。属于高级编程内容,一般涉及不到。,类名:唯一标识名,类基:直接基类或接口。默认基类是object类,多个接口之间用逗号相隔,类修饰符访问权限、类的类型等,注意同一修饰符不允许出现多次,见表3.1,5,表3.1 类修饰符,修饰符,作 用 说 明,public,表示不限制对类的访问。类的访问权限省略时默认为,public,protected,表示该类只能被这个类的成员或派生类成员访问,private,表示该类只能被这个类的成员访问,很少用,internal,表示该类能够由程序集中的所有文件使用,,而不能由程序集之外的对象使用,new,只允许用在嵌套类中,,它表示所修饰的类会隐藏继承下来的同名成员,abstract,表示这是一个抽象类,该类含有抽象成员,,因此不能被实例化,只能用作基类,sealed,表示这是一个密封类,不能从这个类再派生出其他类。,显然密封类不能同时为抽象类,示例:,class Student,/类主体,6,3.2.2 类的成员,类体(类主体)用于定义该类的成员,用一对花括号,括起来,由两部分组成:,1.类体中以类成员声明形式引入的类成员,包括:常数声明、字段声明、方法声明、属性声明、事件声明、索引器声明、运算符声明、构造函数声明、析构函数声明、静态构造函数、类型声明等,2.直接从基类继承而来的成员,7,一、成员类型:,(1)静态成员,在字段、方法、属性、事件、运算符和构造函数,声明中含有,public static,修饰符,(2)实例成员,在字段、方法、属性、事件、运算符和构造函数,声明中不含有,public static,修饰符,二、默认成员访问修饰符private,类成员注意点:,8,class Program,class AClass,public static,int x=1;,public,int y=2;,static void Main(string args),AClass ab=new AClass();,Console.WriteLine(y=0,x=1,ab.y,AClass.x);,9,1常数声明,语法形式:,属性集信息 常数修饰符 const 类型 标识符=常数表达式,常数修饰符,new,、,public,、,protected,、,private,、,internal,public:访问不受限制,protected:访问仅限于包含类或从包含类派生的类型,internal:访问仅限于当前程序集。,private:访问仅限于包含类。,类型sbyte、byte、short、ushort、int、uint、long、ulong、char、float、double、decimal、bool、string、枚举类型或引用类型。常数表达式的值类型应与目标类型一致,或者通过隐式转换规则转换成目标类型。,10,例如:,class A_const,public,const int X=10;,const double PI=3.14159;/默认访问修饰符,private,const double Y=0.618+3.14;,注意1.常数表达式的值是一个可以在编译时计算的值,注意2.常数声明不允许使用static修饰符,只能通过类访问,。,class Test,public static void Main(),A_const m=new A_const();,Console.WriteLine(“X=0,PI=1,Y=2”,A_const.X,A_const.PI,A_const.Y);,11,2字段声明,语法形式,:,属性集信息 字段修饰符 类型 变量声明列表;,变量声明列表标识符或用逗号“,”分隔的多个标识符,并且变量标识符还可用赋值号“=”设定初始值。,字段修饰符new、public、protected、private、internal、,static、readonly、volatile,static:静态变量。利用类直接访问静态变量,,利用类的实例(对象)访问非静态变量,readonly:只读变量,声明时或在构造函数中赋值,一旦赋值不可改变。与const常量不同,const常量编译时赋值计算。,volatile:表示字段可能被多个并发执行的进程修改。,12,【例3.1】通过构造函数给只读字段赋值,using System;,public class Area,public readonly double Radius;/Radius是只读字段,private double x,y;,public double Size;,public static double Sum=0.0;,public Area(),Radius=1.0;/通过构造函数对radius赋值,class Test,public static void Main(),Area s1=,new,Area();,/s1.Radius=2;,Console.WriteLine(Radius=0,Size=1,Sum=2,s1.Radius,s1.Size,Area.Sum);,/静态字段通过类访问Area.Sum,实例字段通过对象访问s1.Size,Console.Read();,出错了!,无法修改只读字段,13,3.2.3 构造函数和析构函数,1构造函数,(1)实现对象初始化,(2)分为,实例构造函数,和,静态构造函数,(3)函数调用时机:new,1)实例构造函数的声明,语法形式:,属性集信息 构造函数修饰符 标识符(参数列表),:base(参数列表):this(参数列表),构造函数语句块,public,与类名相同,没有返回值,构造函数重载:,参数个数或类型不同,调用基类同参数列表的构造函数,调用本类同参数列表的构造函数,14,构造函数修饰符,public、protected、internal、private、extern,一般地,构造函数总是,public,类型的。,如果是private类型的,表明类不能被外部类实例化。,标识符(参数列表 opt)构造函数名,必须与这个类同名,无返回类型和返回值,构造函数可以有0n个参数构造函数重载,3.用new运算符创建一个类的对象时,类名后的一对圆括号提供初始化列表,系统根据这个初始化列表的参数个数、参数类型和参数顺序调用不同的构造函数。,实例构造函数注意点:,15,class Test,static void Main(),Time t1,t2,t3,t4;,/对t1,t2,t3,t4分别调用不同的构造函数,t1=new Time();,t2=new Time(8);,t3=new Time(8,30);,t4=new Time(8,30,30);,【例3.2】Time类的构造函数及其重载,using System;,public class Time,private int hour,minute,second;,public Time(),hour=minute=second=0;,public Time(int h),hour=h;,minute=second=0;,public Time(int h,int m),hour=h;,minute=m;,second=0;,public Time(int h,int m,int s),hour=h;,minute=m;,second=s;,public string getTime(),return hour.ToString()+:+minute.ToString()+:+second.ToString();,Console.WriteLine(t1=0,t1.getTime();,16,【例,3.3,】,构造函数初始化,using System;,class Point,public double x,y;,public Point(),x=0;y=0;,public Point(double x,double y),this.x=x;/当this在实例构造函数中使用时,,this.y=y;/它的值就是对该构造的对象的引用,class Test,public static void Main(),Point a=new Point();,Point b=new Point(3,4);/用构造函数初始化对象,Console.WriteLine(a.x=0,a.y=1,a.x,a.y);,Console.WriteLine(b.x=0,b.y=1,b.x,b.y);,Console.Read();,a.x=0,a.y=0,b.x=3,b.y=4,17,构造函数注意点:,若类中没有提供构造函数,则CLR会自动提供一个默认的构造函数,一旦类中提供了自定义的构造函数,系统则不提供默认的构造函数,不必显示调用构造函数,实例构造函数不能被继承,18,派生类构造函数的调用,调用时机:创建派生类的对象时,即 new,构造函数不被继承,派生类构造函数在执行前,,首先显式或隐式地调用基类构造函数,默认调用基类的无参数构造函数,除非显式地指定调用有参数构造函数,this关键字引用类的当前实例,base关键字用于从派生类中访问基类的成员,调用基类上已被其他方法重写的方法,指定创建派生类实例时应调用的基类构造函数,19,【例3.4】派生类构造函数及其调用,using System;,class Point,private int x,y;,public Point(),x=0;y=0;,Console.WriteLine(Point()constructor:0,this);,public Point(int x,int y),this.x=x;,this.y=y;,Console.WriteLine(Point(x,y)constructor:0,this);,class Circle:Point,private double radius;,public Circle()/默认约定调用基类的无参构造函数Point(),Console.WriteLine(Circle()constructor:0,this);,public Circle(double radius):base(),this.radius=radius;,Console.WriteLine(Circle(radius)constructor:0,this);,public Circle(int x,int y,double radius):base(x,y),this.radius=radius;,Console.WriteLine(Circle(x,y,radius)constructor:0,this);,class Test,static void Main(),Point a=new Point();,Circle b=new Circle(3.5);,Circle c=new Circle(1,1,4.8);,Console.Read();,1,3,2,5,4,20,2)静态构造函数的声明,语法形式:,属性集信息 静态构造函数修饰符 标识符(),静态构造函数体,静态构造函数修饰符 extern static 或者static extern。如有extern修饰,则是一个外部静态构造函数,不提供任何实际的实现,静态构造函数体仅仅是一个分号,标识符 是静态构造函数名,必须与类同名且不能有参数,静态构造函数体只能对静态数据成员进行初始化,21,静态构造函数不可继承,不能直接调用,调用时机:,创建类的实例,引用类的任何静态成员,至多被执行一次,若类没有声明静态构造函数,而又包含带有初始设定的静态字段时,编译器会自动生成一个默认的静态构造函数,静态构造函数注意点:,22,2析构函数,语法形式:,属性集信息 extern 标识符(),析构函数体,标识符必须与类名相同,前面需加“”,析构函数不能写返回类型,也不能带参数,一个类最多只能有一个析构函数,23,析构函数注意点,析构函数不能由程序显式地调用,而是由系统在释放对象时自动调用,派生类对象的析构函数调用链:,1)执行派生类的析构函数,2)执行基类的析构函数,直到调用object类的析构函数为止,与执行构造函数的顺序相反,24,第3章 面向对象编程基础,1.理解基本概念,2.理解,类,3.使用构造函数,4.学习,方法,5.学习,属性,掌握,25,回顾,对象,具有属性和操作(方法)的实体,类,对象的抽象,抽象的数据类型,类是对象的模板,对象是类的具体化 或 类的实例,26,类的成员,1.类体中以类成员声明形式引入的类成员,包括:常数声明、字段声明、构造函数声明、析构函数声明、静态构造函数、方法声明、属性声明等,2.直接从基类继承而来的成员,27,访问修饰符,public,访问不受限制,protected,只能被本身或派生类的实例访问,private,只能被本身访问,static,静态,非实例,28,构造函数,构造函数,实例构造函数,与类名同名,在类进行new运算(即类实例化时),this:引用当前类的实例,base:用于从派生类中访问基类的成员,调用基类上已被其他方法重写的方法,指定创建派生类实例时应该调用的基类构造函数,调用顺序,先基类后派生类,29,3.3 方法,3.3.1 方法的声明,语法形式:,属性集信息 方法修饰符 返回类型 方法名(形参表),方法体,1.C#中所有的变量、方法都必须封装在类中,2.对象间、类间只能通过类所提供的方法进行互操作,3.从方法的声明、方法的参数、静态方法与实例方法、方法的重载与覆盖等方面理解,30,表3.2 方法修饰符,修 饰 符,作 用 说 明,new,在一个继承结构中,用于隐藏基类同名的方法,public,表示该方法可以在任何地方被访问,,默认public,protected,表示该方法可以在它的类体或派生类类体中被访问,但不能在类体外访问,private,表示该方法只能在这个类体内被访问,internal,表示该方法可以被同处于一个工程的文件(程序集)访问,static,表示该方法属于类本身,而不属于某特定对象,virtual,表示该方法可在派生类中重写,来更改该方法的实现,abstract,表示该方法仅仅定义了方法名及执行方式,但没有给出具体实现,所以包含这种方法的类是抽象类,有待于派生类的实现,override,表示该方法是将从基类继承的virtual方法的新实现,sealed,表示这是一个密封方法,它必须同时包含override修饰,以防止它的派生类进一步重写该方法,extern,表示该方法从外部实现,31,表3.3 修饰符的无效组合,修 饰 符,不能与下列选项一起使用,static,virtual、abstract 和 override,virtual,static、abstract 和 override,override,new、static 和 virtual,abstract,virtual 和 static,new,override,extern,abstract,返回类型,方法可以返回值也可以不返回值。,返回值类型为任意一种C#的数据类型,通过return语句返回。如果方法不返回值,则它的返回类型可标为void,默认情况下为 void,方法名,:除,Main,()、关键字以外,32,【,例3.6,】,下面程序中的StackTp类定义了,几个方法以模拟实现一个压栈操作。,using System;,class StackTp,int MaxSize;int Top;int StkList;,public StackTp()/构造函数,MaxSize=100;,Top=0;,StkList=new int MaxSize;,public StackTp(int size)/构造函数,MaxSize=size;,Top=0;,StkList=new int MaxSize;,public bool isEmptyStack()/方法,if (Top=0)return true;,else return false;,public bool isFullStack(),if(Top=MaxSize)return true;,else return false;,public void push(int x),StkListTop=x;,Top+;,class Test,public static void Main(),StackTp ST=new StackTp(20);,string s1;,if(ST.isEmptyStack()/调用方法 s1=Empty;,else,s1=not Empty;,Console.WriteLine(Stack is +s1);,for(int i=0;iy),tmp=x;x=y;y=tmp;,if(xz),tmp=x;x=z;z=tmp;,if(yz),tmp=y;y=z;z=tmp;,/Console.WriteLine(,“x=0,y=1,z=2,x,y,z);,class Test,static void Main(),Myclass m=new Myclass();,int a,b,c;,a=30;b=20;c=10;,m.Sort(a,b,c);,Console.WriteLine(a=0,b=1,c=2,a,b,c);,Console.Read();,【,例3.7,】,演示了当方法Sort传递的是值参数时,,对形参的修改不影响其实参。,35,是值参数传递方式,形参另外分配一块内存,接受实参的引用值副本,1.对引用值的修改不会影响实参,2.如果改变的是所引用的对象,则将会影响实参所引用的对象,值参数,传递,引用对象,内存首地址,36,using System;,class Myclass,public void SortArray(int a),int i,j,pos,tmp;,for(i=0;ia.Length,1;i+),for(pos=j=i;ja j)pos=j;,if(pos!=i),tmp=ai;,ai=apos;,apos=tmp;,class Test,static void Main(),Myclass m=new Myclass();,int score=87,89,56,90,100,75,64,45,80,84;,m.SortArray(score);,for(int i=0;iy),tmp=x;x=y;y=tmp;,if(xz),tmp=x;x=z;z=tmp;,if(yz),tmp=y;y=z;z=tmp;,/Console.WriteLine(,“x=0,y=1,z=2,x,y,z);,class Test,static void Main(),Myclass m=new Myclass();,int a,b,c;,a=30;b=20;c=10;,m.Sort(a,b,c);,Console.WriteLine(a=0,b=1,c=2,a,b,c);,Console.Read();,【,例3.7,】,演示了当方法Sort传递的是值参数时,,对形参的修改不影响其实参。,39,2.引用参数,引用参数形参的改变,影响,实参,例3.7,中 实际变量a、b、c是不随形参x、y、z的,但如果想改变实际变量a、b、c的值,则用引用参数,C#用,ref,修饰符 声明 引用参数,引用参数不创建新的存储单元,与方法调用中的实际参数变量同处一个存储单元,传递内存地址,属于输入参数,40,【例3.9】将例3.7程序中Sort方法的值参数传递方式改成引用参数传递,这样在方法Sort中对参数x、y、z按从小到大的排序影响了调用它的实参a、b、c。,using System;,class Myclass,public void Sort(ref int x,ref int y,ref int z),int tmp;/tmp是方法Sort的局部变量,/将x,y,z按从小到大排序,if(xy)tmp=x;x=y;y=tmp;,if(xz)tmp=x;x=z;z=tmp;,if(yz)tmp=y;y=z;z=tmp;,class Test,static void Main(),Myclass m=new Myclass();,int a,b,c;,a=30;b=20;c=10;,m.Sort(ref a,ref b,ref c);,Console.WriteLine(a=0,b=1,c=2,a,b,c);,Console.Read();,41,使用ref声明引用参数的注意:,(1)方法的参数声明中ref关键字仅对,紧跟,在它后面的参数有效,而不能应用于整个参数表。,例如,Sort方法中x、y、z都要加ref修饰,(2)在方法的调用中也要用,ref修饰实参,,且实参必须为变量,实参和形参的数据类型必须完全匹配,(3)在方法外(方法调用前),ref参数,必须明确赋值,(4)ref参数也可以用于传递引用类型的对象,42,第3章 面向对象编程基础,方法声明如同C语言的“函数”,访问修饰符默认为,public,方法参数,值参数(值类型、引用类型),引用参数ref,输出参数out,参数数组params,方法,43,方法重载与覆盖,方法签名,方法覆盖new 和 虚方法,virtual override,属性,property,get访问器,set访问器,44,3.输出参数,1.用法与ref参数相似,但为,输出参数值,2.只能用于从方法中传出值,,因此必须在方法结束之前,对out参数赋值,3.在参数前加out修饰符的形式参数,4.out参数也可以用于传递引用类型的对象,45,class Test,static void Main(),Myclass m=new Myclass();,int score=87,89,56,90,100,75,64,45,80,84;,int smax,smin;,double savg;,m.MaxMinArray(score,out,smax,out,smin,out,savg);,Console.Write(Max=0,Min=1,Avg=2 ,smax,smin,savg);,Console.Read();,【例3.10】求一个数组中元素的最大值、最小值和平均值。,using System;,class Myclass,public void MaxMinArray(int a,out,int max,out,int min,out,double avg),int sum;,sum=max=min=a0;,for(int i=1;imax)max=ai;,if(aimin)min=ai;,sum+=ai;,avg=sum/a.Length;,46,【例3.11】下面程序定义了两个方法,一个是Swap1,一个是Swap2,它们都有两个引用对象作为参数,但Swap2的参数加了ref修饰,调用这两个方法产生的结果是不一样的。,using System;,class Myclass,public void Swap1(,string,s,string,t),string tmp;,tmp=s;,s=t;,t=tmp;,public void Swap2(,ref,string,s,ref string t),string tmp;,tmp=s;,s=t;,t=tmp;,class Test,static void Main(),Myclass m=new Myclass();,string s1=ABCDEFG,string s2=134567;,m.Swap1(s1,s2);,Console.WriteLine(s1=0,s1);,Console.WriteLine(s2=0,s2);,m.Swap2(ref s1,ref s2);,Console.WriteLine(s1=0,s1);,Console.WriteLine(s2=0,s2);,Console.Read();,s1,s2的引用,并没有改变,s1,s2的引用,互相交换了,47,4参数数组,3.3.3 静态方法与实例方法,特点:,参数为可变长度,使用,params,关键字来指定一个可变长度的参数表,注意:,1.一个方法中只能声明一个params参数,2.params参数必须放在参数表最后,3.params参数是一个一维数组,参数数组的参数:0n,4.params不可与ref、out修饰符组合使用,1.静态方法用static修饰,2.只能访问类中的静态成员,48,【,例3.12,】,下面程序演示了Myclass类中的方法MaxMin有一个参数,数组类型的参数,在调用这个方法时具有灵活性。,using System;,class Myclass,public void MaxMin(out int max,out int min,params int a),/如果可变参数为零个,,/取一个约定值或产生异常,if(a.Length=0),max=min=,1;,return;,max=min=a0;,for(int i=1;imax)max=ai;,if(ai=y?x:y;,public double max(double x,double y),return x=y?x:y;,public int max(int x,int y,int z),return max(max(x,y),z);,public double max(double x,double y,double z),return max(max(x,y),z);,class Test,static void Main(),Myclass m=new Myclass();,int a,b,c;,double e,f,g;,a=10;b=20;c=30;,e=1.5;f=3.5;g=5.5;,Console.WriteLine(max(0,1)=2 ,a,b,m.max(a,b);,Console.WriteLine(max(0,1,2)=3 ,a,b,c,m.max(a,b,c);,Console.WriteLine(max(0,1)=2 ,e,f,m.max(e,f);,Console.WriteLine(max(0,1,2)=3 ,e,f,g,m.max(e,f,g);,Console.Read();,51,方法的,覆盖,使用new隐藏有相同签名的方法,1.当派生类与基类有相同名称或签名的成员时,在派生类中默认隐藏基类成员,但提示警告,2.在派生类成员声明中加new修饰符,可以取消警告信息,3.基类对象被引用到派生类对象时,,访问,的仍是,基类的方法,静态多态,52,【例3.15】定义了一个基类Shape,含有字段域width和height,分别表示形状的宽和高,并定义了一个area方法,求形状的面积。它的派生类Triangle和Trapezia都用关键字new修饰了area方法,using System;,class Shape,protected double width;,protected double height;,public Shape(),width=height=0;,public Shape(double x),width=height=x;,public Shape(double w,double h),width=w;height=h;,public double area(),return width*height;,class Triangle:Shape/三角形,public Triangle(double x,double y):base(x,y),new,public double area(),/派生类方法与基类方法同名,编译时会有警告信息,return width*height/2;,class Trapezia:Shape /梯形,double width2;,public Trapezia(double w1,double w2,double h):base(w1,h)width2=w2;,new,public double area(),/加new隐藏基类的area方法,return (width+width2)*height/2;,class Test,static void Main(),Shape A=new Shape(2,4);,Triangle B=new Triangle(1,2);,Trapezia C=new Trapezia(2,3,4);,Console.WriteLine(A.area=0,A.area();,/,调,Shape,的,area,方法,Console.WriteLine(B.area=0,B.area();,/,调,Triangle,的,area,方法,Console.WriteLine(C.area=0,C.area();,/,调,Trapezia,的,area,方法,A=B;,/,在,C#,中,基类的引用也能够引用派生类对象,Console.WriteLine(A.area=0,A.area();,/,调,Shape,的,area,方法,A=C;,Console.WriteLine(A.area=0,A.area();,/,调,Shape,的,area,方法,Console.Read();,基类,方法,53,虚方法:基类的方法用关键字,virtual,修饰,对基类的虚方法重载:派生类用关键字,override,修饰与基类中虚方法有相同签名的方法,注意:,(1)不能将虚方法声明为静态的(static),(2)不能将虚方法声明为私有的(private),(3)覆盖方法必须与它相关的虚方法匹配,(4)一个覆盖方法覆盖的必须是虚方法,实现运行时多态(,动态绑定,),54,【例3.16】将例3.15改写,Shape类中的方法area用virtual修饰,而派生类,Triangle和Trapezia用override修饰area方法。,using System;,class Shape,protected double width;,protected double height;,public Shape(),width=height=0;,public Shape(double x),width=height=x;,public Shape(double w,double h),width=w;height=h;,public,virtual,double area(),/基类中用virtual修饰符声明一个虚方法,return width*height;,class Triangle:Shape /三角形,public Triangle(double x,double y):base(x,y),public,override,double area(),/派生类中用override修饰符覆盖基类虚方法,return width*height/2;,class Trapezia:Shape /梯形,double width2;,public Trapezia(double w1,double w2,double h):base(w1,h)width2=w2;,public,override,double area(),派生类中用override修饰符覆盖基类虚方法,return (width+width2)*height/2;,class Test,static void Main(),Shape A=new Shape(2,4);,Triangle B=new Triangle(1,2);,Trapezia C=new Trapezia(2,3,4);,Console.WriteLine(A.area=0,A.area();/调Shape的area方法,Console.WriteLine(B.area=0,B.area();/调Triangle的area方法,Console.WriteLine(C.area=0,C.area();/调Trapezia的area方法,A=B;,Console.WriteLine(A.area=0,A.area();/调派生类Triangle的area方法,A=C;,Console.WriteLine(A.area=0,A.area();/调,派生类,Trapezia的area方法,Console.Read();,派生类,方法,55,3.4 属性property,回顾一下,例3.2,(P51)。,为了实现良好的数据封装和数据隐藏,类的,字段,成员的访问属性一般设置成,private,(默认)或protected,利用,public,方法,来访问私有的或受保护的字段,56,public string,getTime(),return hour.ToString()+:+minute.ToString()+:+second.ToString();,【,例3.2,】,Time类的构造函数及其重载,using System;,public class Time,private int hour,minute,second,;,public Time(),hour=minute=second=0;,public Time(int h),hour=h;,minute=second=0;,public Time(int h,int m),hour=h;,minute=m;,second=0;,public Time(int h,int m,int s),hour=h;,minute=m;,second=s;,class Test,static void Main(),Time t1,t2,t3,t4;,t1=new Time();,t2=new Time(8);,t3=new Time(8,30);,t4=new Time(8,30,30);,t1.getTime();t2.getTime();,t3.getTime();t4.
展开阅读全文

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


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

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

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

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

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

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

gongan.png浙公网安备33021202000488号   

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

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

客服