七、C#入门基础07(属性和方法,结构和类、构造函数)
一、类
定义一个类时,等于定义了一个数据类型的蓝图。
这实际上并没有定义任何的数据,但它定义了类的名称意味着什么,也就是说,类的对象由什么组成及在这个对象上可执行什么操作。
对象是类的实例。构成类的方法和变量成为类的成员。
类的定义:
类的定义是以关键字 class 开始,后跟类的名称。
类的主体,包含在一对花括号内。
类定义的一般形式:
class class_name
{
// member variables
variable1;
…
variableN;
// member methods
method1(parameter_list)
{
// method body
}
}
访问标识符 指定了对类及其成员的访问规则。如果没有指定,则使用默认的访问标识符。类的默认访问标识符是 internal,成员的默认访问标识符是 private。
数据类型 指定了变量的类型,返回类型 指定了返回的方法返回的数据类型。
二、属性
属性是类,结构和接口的命名成员。
类或结构中的成员变量或方法称为域。
属性是域的扩展,且可使用相同的语法来访问。
它们使用访问器让私有域的值可被读写或操作。
属性不会确定存储位置。
相反,它们具有可读写或计算它们值的访问器。
访问器
属性的访问器包含有助于读取或计算或设置属性的可执行语句。
访问器声明可包含get访问器,set访问器。
三、方法
方法是把一些相关的语句组织在一起,用来执行一个任务的语句块。
定义方法:
当定义一个方法时,从根本上说是在声明它的结构的元素。
(Parameter List)
{
Method Body
}
Access Specifier:访问修饰符,这个决定了变量或方法对于另一个类的可见性。
Return type:返回类型,一个方法可以返回一个值。返回类型是方法返回的值的数据类型。如果方法不返回任何值,则返回类型为 void。
Method name:方法名称,是一个唯一的标识符,且是大小写敏感的。它不能与类中声明的其他标识符相同。
Parameter list:参数列表,使用圆括号括起来,该参数是用来传递和接收方法的数据。参数列表是指方法的参数类型、顺序和数量。参数是可选的,也就是说,一个方法可能不包含参数。
Method body:方法主体,包含了完成任务所需的指令集。
调用方法:
类内部可以使用方法名调用方法,类外部必须使用类的实例化对象名.方法名进行调用。
四、构造函数
类的构造函数是类的一个特殊的成员函数,当创建类的新对象时执行。
构造函数的名称与类的名称完全相同,它没有任何返回类型。
默认的构造函数没有任何参数。
但是如果你需要一个带有参数的构造函数可以有参数,这种构造函数叫做参数化构造函数。
带有参数的构造函数可以在创建对象的同时给对象赋初始值。
构造函数的定义:
//不带参数的构造方法
public 类名()
{
//执行代码
}
//带参数的构造方法
public 类名(数据类型 参数1,数据类型 参数2,数据类型 参数3,……,数据类型 参数N)
{
//执行代码
}
析构函数:
类的析构函数是类的一个特殊的成员函数,当类的对象超出范围时执行。
析构函数的名称是在类的名称前加上一个波浪形(~)作为前缀,它不返回值,也不带任何参数。
析构函数用于在结束程序(比如关闭文件、释放内存等)之前释放资源。
析构函数不能继承或重载。
析构函数的定义:
~类名()
{
//执行代码
}
五、结构
结构体是值类型数据结构。
它使得一个单一变量可以存储各种数据类型的相关数据。
struct 关键字用于创建结构体。
定义结构:
为了定义一个结构,必须使用 struct 语句。
struct 结构名
{
属性;
};
使用结构:
结构名 结构变量名;
结构变量名.属性=属性值;
结构有以下特点:
1.结构可带有方法、字段、索引、属性、运算符方法和事件。
2.结构可定义构造函数,但不能定义析构函数。
但是能为结构定义默认的构造函数。
3.默认的构造函数是自动定义的,且不能被改变。与类不同,结 构不能继承其他的结构或类。
4.结构不能作为其他结构或类的基础结构。
5.结构可实现一个或多个接口。
6.结构成员不能指定为 abstract(抽象的)、virtual(虚拟的) 或 protected(受保护的)。
7.使用 New 操作符创建一个结构对象时,会调用适当的构造函 数来创建结构。与类不同,结构可以不使用 New 操作符即 可被实例化。不使用 New 操作符,只有在所有的字段都被 初始化之后,字段才被赋值,对象才被使用。
类和结构有以下几个基本的不同点:
1.类是引用类型,结构是值类型。
2.结构不支持继承。
3.结构不能声明默认的构造函数。
六,代码:
1.Person类(关键字:class):
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _07 { /// <summary> /// 人的类 /// </summary> public class Person { //定义属性 属性之前会有数据类型 由于数据类型 所以每一个属性都会有默认值 //string "" int 0 char '' //面试题:string str=""; string str1=string.Empty; string str2=null; 之间的区别? //str 内存中需要分配一个空的空间 str1在内存中不需要分配内存空间 /// <summary> /// 年龄 /// </summary> //属性默认值 如果属性不进行赋值 则使用默认值 如果属性进行赋值 则使用赋值的信息 public int age=20; /// <summary> /// 姓名 /// </summary> public string name; /// <summary> /// 地址 /// </summary> public string address; public char sex; //方法 //方法的重载:同名不同参,与返回值无关(类型“Person”已定义了一个名为“ShowTime”的具有相同参数类型的成员) //1 无参无返回 2无参有返回 3有参有返回 4有参无返回 //1 无参无返回 /// <summary> /// /// </summary> public void ShowTime() { Console.WriteLine(this.name+"..."+this.age+"..."+this.address+"..."+this.sex); Console.ReadKey(); } //2无参有返回 /// <summary> /// 获取到年龄的默认值 /// </summary> /// <returns>返回一个默认值是10</returns> public int GetAge() { return 10; } //3有参有返回 /// <summary> /// 判断当前输入的年龄是否符合年龄的规则 /// </summary> /// <param name="age">输入的年龄</param> /// <returns></returns> public int GetAge(int age) { //如果你的年龄的范围是在 0到100 则返回你当前输入的年龄 if (age>0&&age<100) { return age; } //输入的年龄超过0-100 所以默认返回18 return 18; } //4有参无返回 /// <summary> /// 输出当前的对象的信息 /// </summary> /// <param name="p">需要输出信息的对象</param> public void ShowTime(Person p) { Console.WriteLine("姓名:{0},年龄:{1},地址:{2}",p.name,p.age,p.address); Console.ReadKey(); } //构造函数 分为2个 无参构造函数(默认的构造函数) 有参构造函数 //如果写了 有参构造函数 而不写无参构造函数 则当前的类里面只会有有参构造函数 //所以我们在写构造函数的时候,有参构造函数和无参构造函数 都需要进行编写 // 1构造函数是公共的 2构造函数的名称和类名一致 3构造函数是没有返回与不返回之说的 /// <summary> /// 无参的构造函数 /// </summary> public Person() { Console.WriteLine("这是一个无参的构造函数"); Console.ReadKey(); } /// <summary> /// 有参的构造函数 /// </summary> /// <param name="age">年龄</param> /// <param name="name">姓名</param> /// <param name="address">地址</param> public Person(int age,string name,string address) { Console.WriteLine("这是一个有参的构造函数"); //this 指的是当前的类 this.age = age; this.name = name; this.address = address; Console.ReadKey(); } //构造函数有没有重载的可能性 //构造函数的重载 public Person(string name,string address) { this.name = name; this.address = address; } public Person(string address) { this.address = address; } ~Person() { Console.WriteLine("我是析构函数,等于当前的对象使用完毕,并被回收(GC)垃圾回收机制"); Console.ReadKey(); } } }
2.Student结构(关键字:struct ):
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _07 { /// <summary> /// 定义一个学生的结构 /// </summary> public struct Student { public string Sname; public int Sage; public void ShowTime() { Console.WriteLine(this.Sname+"..."+this.Sage); Console.ReadKey(); } } }
3.测试类 Program
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _07 { class Program { static void Main(string[] args) { //如何来使用类 //1. 类实际上就是对象的共同描述体 //2. 对象=万事万物皆为对象 //3. 对象有一个关键字 new //Person p1 = new Person(); //p1.age = p1.GetAge(120); //p1.name = "zs"; //p1.address = "火星"; //p1.ShowTime(); //p1.ShowTime(p1); //p1 实际上指的是 年龄是18岁 名字叫做zs 地址在火星的一个人 //输出对象的信息 //Console.WriteLine("姓名:{0},年龄:{1},地址:{2}",p1.name,p1.age,p1.address); Person p1 = new Person(18,"zs","火星"); p1.ShowTime(); Person p2 = new Person("ls", "地球"); p2.ShowTime(); Person p3 = new Person( "水星"); p3.ShowTime(); //Student stu = new Student();//可以new 一般不new Student stu; stu.Sname = "zs"; stu.Sage = 18; stu.ShowTime(); } } }阅读更多
- 【C#】面向对象基础—属性、方法、结构
- 【C#基础知识】之结构、数组及常用的几种排序方法总结
- C# 在线培训之零基础入门 01:开篇及C#程序、解决方案的结构
- C#基础 [07] 方法[上]
- 【C#基础】之WinForm窗体常用控件的属性、方法及事件简介
- 【C#基础】之WinForm窗体常用控件的属性、方法及事件简介
- 基础_C# 方法、方法参数和返回值、属性 、索引器 、访问修饰符 访问修饰符
- java基础入门-final关键字在类、属性域、方法里面的使用
- (spring-第3回【IoC基础篇】)spring的依赖注入-属性、构造函数、工厂方法等的注入(基于XML)
- 【C#基础】之WinForm窗体常用控件的属性、方法及事件简介
- java类的结构(属性、方法、构造函数)
- C#2005 .NET3.0高级编程学习笔记————类和结构,类的数据成员,类的函数成员(方法、属性)
- JavaScript基础学习之-JavaScript权威指南--第八章函数属性方法构造函数
- C#基础(七)构造函数、结构
- C#分析数据库结构,使用XSL模板自动生成代码 - 清清月儿 .NET万花筒 Asp.net技术 Asp.net教程 Asp.net源码 Asp.net基础 Asp.net控件 Asp.net入门 - CSDNBlog
- Jquery基础入门一内置方法和属性(1)
- JavaScript基础学习之-JavaScript权威指南--8.7函数属性方法构造函数
- C#笔记三:类-对象-结构-方法-函数-属性-数组等整理
- C#基础篇九OOP属性结构枚举
- 【C#基础】之访问修饰符、类与属性、类与结构的简单介绍