大名专业做网站,wordpress get_query_var,html网站设计实验报告,公司注册法人查询目录
一、涉及到的知识点
1.结构
2.结构和类的区别
3.继承
4.使用类继承提高程序的开发效率
5.属性
#xff08;1#xff09;属性定义
#xff08;2#xff09;get访问器
#xff08;3#xff09;set访问器
6. 属性和字段的区别
二、实例#xff1a;通过定义…目录
一、涉及到的知识点
1.结构
2.结构和类的区别
3.继承
4.使用类继承提高程序的开发效率
5.属性
1属性定义
2get访问器
3set访问器
6. 属性和字段的区别
二、实例通过定义结构计算矩形面积
1.源码
2.生成效果
三、实例通过继承类计算梯形面积
1.源码
2.生成效果 一、涉及到的知识点
1.结构 结构是一种可以包含数据成员和方法成员的值类型数据结构。为结构分配数据时不需要从托管堆中分配内存结构类型的变量直接包含了该结构的数据。结构中可以包括构造函数、常量、字段、方法、属性、运算符、事件和嵌套类型等但如果要同时包括上述几种成员则应该考虑使用类。 使用结构对于小的数据结构特别有用能够节省大量的分配内存如复数和坐标系中的点。结构具有以下特点
结构是值类型。向方法传递结构时是通过传值方式传递的而不是作为引用传递的。结构的实例化可以不使用new运算符。结构可以声明构造函数但它们必须带参数。一个结构不能从另一个结构或类继承。所有结构都直接继承自System.ValueType而System.ValueType继承自System.Object。结构可以实现接口。在结构中初始化实例字段是错误的。 由于结构的副本由编译器自动创建和销毁因此不需要使用默认构造函数和析构函数。实际上编译器通过为所有字段赋予默认值来实现默认构造函数。 C#中使用struct关键字来定义结构语法格式如下 【结构修饰符】 struct 【结构名】{}
2.结构和类的区别 结构是值类型它在栈上分配数据并且结构的赋值将分配产生一个新的对象 而类是引用类型它在堆上分配数据对类的对象进行赋值时只是复制了引用它们都指向同一个实际对象分配的内存。
3.继承 继承是面向对象编程最重要的特性之一任何类都可以从另外一个类继承这就是说这个类拥有它继承的类的所有成员。在面向对象编程中被继承的类称为父类或基类。C#中提供了类的继承机制但只支持单继承而不支持多重继承即在C#中一次只允许继承一个类不能同时继承多个类。 利用类的继承机制程序开发人员可以在已有类的基础上构造新类这一性质使得类支持分类的概念。例如用户可以通过增加、修改或替换类中的方法对这个类进行扩充以适应不同的应用要求。在日常生活中很多东西都很有条理那是因为它们有着很好的层次分类如果不用层次分类则需要对每个对象都定义其所有的性质。使用继承后每个对象就可以只定义自己的特殊性质每一层的对象只需定义本身的性质其他性质可以从上一层继承下来。 继承一个类时类成员的可访问性是一个重要的问题。子类(派生类)不能访问基类的私有成员但是可以访问其公共成员这就是说只要使用public声明类成员就可以让一个类成员被基类和子类(派生类)同时访问同时也可以被外部的代码访问。 为了解决基类成员访问问题C#还提供了另外一种可访问性即protected只有子类(派生类)才能访问protected成员基类和外部代码都不能访问protected成员。 除了可以定义成员的保护级别外还可以为成员定义其继承行为。基类的成员可以是虚拟的成员可以由继承它的类重写。子类(派生类)可以提供成员的其他执行代码这种执行代码不会删除原来的代码仍可以在类中访问原来的代码但外部代码不能访问它们。如果没有提供其他执行方式外部代码就直接访问基类中成员的执行代码。 另外基类还可以定义为抽象类。抽象类不能直接实例化要使用抽象类就必须继承这个类然后再实例化。C#中实现继承的语法格式如下
class DerivedClass:BaseClass {}
说明继承类时必须在子类和基类之间使用冒号(:)。
4.使用类继承提高程序的开发效率 类可以从另外一个类继承也就是说这个类拥有它继承的类的所有成员(除构造方法外)。利用类的继承机制程序开发人员可以在已有类的基础上构造新类从而更快地提高程序的开发效率。
5.属性 在定义类尤其定义基类时离不开对属性的声明。 属性定义的过程中需要用到get访问器和set访问器。
1属性定义 属性是对现实实体特征的抽象它提供了对类或对象性质的访问。类的属性描述的是状态信息在类的实例中属性的值表示对象的状态值。属性不表示具体的存储位置属性有访问器这些访问器指定在它们的值被读取或写入时需要执行的语句。所以属性提供了一种机制把读取和写入对象的某些特性与一些操作关联起来程序员可以像使用公共数据成员一样使用它。属性的声明格式如下
【修饰符】【类型】【属性名】
{get {get访问器体}set {set访问器体}
}
参数说明
修饰符指定属性的访问级别。
类型指定属性的类型可以是任何的预定义或自定义类型。
属性名一种标识符命名规则与字段相同但是属性名的第一个字母通常都大写。
2get访问器 get访问器相当于一个具有属性类型返回值的无参数方法它除了作为赋值的目标外当在表达式中引用属性时将调用该属性的get访问器计算属性的值。get访问器体必须用return语句来返回并且所有的return语句都必须返回一个可隐式转换为属性类型的表达式。
3set访问器 set访问器相当于一个具有单个属性类型值参数和void返回类型的方法。set访问器的隐式参数始终命名为value。当一个属性作为赋值的目标被引用时就会调用set访问器所传递的参数将提供新值。不允许set访问体中的return语句指定表达式。由于set访问器存在隐式的参数value,所以set访问器中不能自定义使用名称为value的局部变量或常量。 由于set访问器中可以包含大量的语句因此可以对赋予的值进行检查如果值不安全或者不符合要求就给予提示这样可以避免因为给属性设置了错误的值而导致的错误。
6. 属性和字段的区别 属性和字段都可以访问对象中包含的数据。对象数据用来区分不同的对象同一个类的不同对象可能在属性和字段中存储了不同的值。字段和属性都可以输入通常把信息存储在字段和属性中但是属性和字段是不同的属性不能直接访问数据字段可以直接访问数据。在属性中可以添加对数据访问的限制例如有一个int类型的属性可以限制它只能存储15的数字但如果用字段就可以存储任何int类型的数值。
二、实例通过定义结构计算矩形面积
1.源码
//定义一个结构然后通过结构计算矩形面积
namespace _112
{public partial class Form1 : Form{private GroupBox? groupBox1;private TextBox? textBox2;private TextBox? textBox1;private Label? label2;private Label? label1;private Label? label3;private TextBox? textBox3;private Button? button1;public Form1(){InitializeComponent();StartPosition FormStartPosition.CenterScreen;Load Form1_Load;}private void Form1_Load(object? sender, EventArgs e){// // label1// label1 new Label{AutoSize true,Location new Point(16, 30),Name label1,Size new Size(32, 17),TabIndex 0,Text 长};// // label2// label2 new Label{AutoSize true,Location new Point(16, 57),Name label2,Size new Size(32, 17),TabIndex 1,Text 宽};// // textBox1// textBox1 new TextBox{Location new Point(76, 24),Name textBox1,Size new Size(100, 23),TabIndex 2};// // textBox2// textBox2 new TextBox{Location new Point(76, 51),Name textBox2,Size new Size(100, 23),TabIndex 3};// // groupBox1// groupBox1 new GroupBox{Location new Point(12, 12),Name groupBox1,Size new Size(190, 81),TabIndex 0,TabStop false,Text 矩形参数};groupBox1.Controls.Add(textBox2);groupBox1.Controls.Add(textBox1);groupBox1.Controls.Add(label2);groupBox1.Controls.Add(label1);groupBox1.SuspendLayout();// // label3// label3 new Label{AutoSize true,Location new Point(12, 105),Name label3,Size new Size(44, 17),TabIndex 4,Text 面积};// // textBox3// textBox3 new TextBox{Location new Point(67, 99),Name textBox3,Size new Size(77, 23),TabIndex 5};// // button1// button1 new Button{Location new Point(155, 99),Name button1,Size new Size(47, 23),TabIndex 6,Text 计算,UseVisualStyleBackColor true};button1.Click Button1_Click;// // Form1// AutoScaleDimensions new SizeF(7F, 17F);AutoScaleMode AutoScaleMode.Font;ClientSize new Size(214, 131);Controls.Add(button1);Controls.Add(label3);Controls.Add(textBox3);Controls.Add(groupBox1);Name Form1;Text 定义结构计算面积;groupBox1.ResumeLayout(false);groupBox1.PerformLayout();}/// summary/// 按钮事件/// /summaryprivate void Button1_Click(object? sender, EventArgs e){Rectangle myRectangle new(Convert.ToDouble(textBox1!.Text), Convert.ToDouble(textBox2!.Text));textBox3!.Text myRectangle.RectangleArea().ToString();}/// summary/// 使用自定义构造函数实例化矩形结构/// 构造函数初始化矩形的宽和高/// 计算矩形的面积/// /summary/// param namex矩形的宽/param/// param namey矩形的高/parampublic struct Rectangle(double x, double y){public double width x;public double height y;/// summary/// 计算矩形面积/// /summary/// returns矩形面积/returnspublic readonly double RectangleArea(){return width * height;}}}
}2.生成效果 三、实例通过继承类计算梯形面积
1.源码
//通过继承类计算梯形的面积
namespace _113
{public partial class Form1 : Form{private GroupBox? groupBox1;private TextBox? textBox3;private TextBox? textBox2;private TextBox? textBox1;private Label? label3;private Label? label2;private Label? label1;private Label? label4;private TextBox? textBox4;private Button? button1;public Form1(){InitializeComponent();StartPosition FormStartPosition.CenterScreen;Load Form1_Load;}private void Form1_Load(object? sender, EventArgs e){// // textBox3// textBox3 new TextBox{Location new Point(83, 80),Name textBox3,Size new Size(100, 23),TabIndex 5};// // textBox2// textBox2 new TextBox{Location new Point(83, 48),Name textBox2,Size new Size(100, 23),TabIndex 4};// // textBox1// textBox1 new TextBox{Location new Point(83, 16),Name textBox1,Size new Size(100, 23),TabIndex 3};// // label3// label3 new Label{AutoSize true,Location new Point(11, 86),Name label3,Size new Size(32, 17),TabIndex 2,Text 高};// // label2// label2 new Label{AutoSize true,Location new Point(11, 54),Name label2,Size new Size(44, 17),TabIndex 1,Text 下底};// // label1// label1 new Label{AutoSize true,Location new Point(11, 22),Name label1,Size new Size(44, 17),TabIndex 0,Text 上底};// // groupBox1// groupBox1 new GroupBox{Location new Point(12, 12),Name groupBox1,Size new Size(200, 118),TabIndex 0,TabStop false,Text 梯形参数};groupBox1.Controls.Add(textBox3);groupBox1.Controls.Add(textBox2);groupBox1.Controls.Add(textBox1);groupBox1.Controls.Add(label3);groupBox1.Controls.Add(label2);groupBox1.Controls.Add(label1);groupBox1.SuspendLayout();// // label4// label4 new Label{AutoSize true,Location new Point(12, 142),Name label4,Size new Size(68, 17),TabIndex 1,Text 梯形面积};// // textBox4// textBox4 new TextBox{Location new Point(77, 136),Name textBox4,Size new Size(70, 23),TabIndex 2};// // button1// button1 new Button{Location new Point(168, 136),Name button1,Size new Size(44, 23),TabIndex 3,Text 计算,UseVisualStyleBackColor true};button1.Click Button1_Click;// // Form1// AutoScaleDimensions new SizeF(7F, 17F);AutoScaleMode AutoScaleMode.Font;ClientSize new Size(224, 166);Controls.Add(button1);Controls.Add(textBox4);Controls.Add(label4);Controls.Add(groupBox1);Name Form1;Text 通过继承计算面积;groupBox1.ResumeLayout(false);groupBox1.PerformLayout();}/// summary/// 按钮事件实例化类对象/// 计算梯形面积/// /summaryprivate void Button1_Click(object? sender, EventArgs e){TrapeziaArea myTrapezoid new(){SD Convert.ToDouble(textBox1!.Text),XD Convert.ToDouble(textBox2!.Text),Height Convert.ToDouble(textBox3!.Text)};textBox4!.Text myTrapezoid.Area().ToString();}}/// summary/// 自定义Trapezia类/// 该类定义了3个属性/// /summaryclass Trapezia{private double sd 0; //定义int型变量作为梯形的上底private double xd 0; //定义int型变量作为梯形的下底private double height 0; //定义int型变量作为梯形的高/// summary/// 上底/// /summarypublic double SD{get{return sd;}set{sd value;}}/// summary/// 下底/// /summarypublic double XD{get{return xd;}set{xd value;}}/// summary/// 高/// /summarypublic double Height{get{return height;}set{height value;}}}/// summary/// 自定义类该类继承自Trapezia/// 继承了父类的3个属性/// /summaryclass TrapeziaArea : Trapezia{/// summary/// 求梯形的面积/// /summary/// returns梯形的面积/returnspublic double Area(){return (SD XD) * Height / 2;}}
}2.生成效果