类与对象:
类: 从具有雷同属性的事物当中笼统出来的观点,平常用来形貌同类个别的鸠合。
对象: 从类当中具体化的一个个别。(比方人类就是一个类, 张三 就是人类中的一个对象)
属性:用来形貌对象特性的。 (在类内里,是类的数据成员^_^)
要领: 申明对象具有的才能。 (在类内里,是类的数据成员^_^,在C/C++中它叫函数,今后要改口啦)
事宜: 具有触发才能的函数.
(与要领差别的是,事宜是被动,由外部事物发出,受动者是对象; 而要领是由对象主动发出的行动,是类的数据成员)
类的定义:
类的定义是以关键字 class 最先,后跟类的称号。类的主体,包含在一对花括号内。
接见修饰符 class 类名 { 接见修饰符数据成员; }
举个例子:
public class Student { private string name; private int age; }
接见类内里的数据成员体式格局与 Struct范例 一样,您要运用(.)点运算符(链接了对象的称号和成员的称号),关于接见修饰符,这里对 private、public、internal 轻微说一下(今后我会细说哒):
private: 私有接见。只限于本类成员接见,子类,实例(对象)都不能接见 (换句话说供类本身挪用)。
public: 公有接见。不受任何限定,一切类都可接见。
internal: 同一个顺序集合的一切类都可接见,能够设想成Public 的个中一个顺序集鸠合。
假如没有指定接见修饰符,相干的接见权限就会运用默许权限,类的默许权限是 internal, 成员的默许权限是private; 所以当我们今后涌现了有关接见权限题目的时刻,记得看看是否是没指定接见修饰符或许运用不适当。
建立对象:
也能够说是对类举行对象实例化,须要采纳 new 语句。拿上面定义好的类举例子 Student stu = new Student(); 此时会挪用Student类当中的 组织要领(函数,浅显的理解为初始化函数吧,今后在说组织函数与析构函数),假如没有默许将数据成员赋值为0;
下面就写个列子:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Test { //定义的一个类,类名叫People public class People { //悉数指定为公有成员 public string name; public char sex; public uint age; } class Program { static void Main(string[] args) { People person = new People(); //实例化一个类,对象名叫 person Console.WriteLine("输入姓名: "); person.name = Console.ReadLine(); // 悉数轻松接见,没有压力 Console.WriteLine("请输入性别:"); person.sex = Console.ReadKey().KeyChar; //char 范例转换 Console.WriteLine("\n请输入岁数:"); person.age = uint.Parse(Console.ReadLine()); //强迫范例转换 Console.WriteLine("您的姓名是:{0}\t您的性别是:{1}\t您的岁数是:{2}",person.name,person.sex,person.age); } } }
运转下:
看完上面写的代码,发明 这与 Struct范例 除了名字差别外有何区分?? 在上面的顺序中确切没有区分(一切成员都是Public),看下面这个:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Test { //定义的一个类,类名叫People public class People { //悉数指定私有成员 private string name; private char sex; private uint age; //定义public 要领作用是输入与输出 public void input() { Console.WriteLine("输入姓名: "); name = Console.ReadLine(); Console.WriteLine("请输入性别:"); sex = Console.ReadKey().KeyChar; //char 范例转换 Console.WriteLine("\n请输入岁数:"); age = uint.Parse(Console.ReadLine()); //强迫范例转换 } public void output() { Console.WriteLine("您的姓名是:{0}\t您的性别是:{1}\t您的岁数是:{2}",name, sex,age); } } class Program { static void Main(string[] args) { People person = new People(); //实例化一个类,对象名叫 person person.input(); //经由过程挪用 public 要领接见privat 成员并赋值 person.output(); //此时没法运用直接运用 Console.WriteLine(person.name)输出,接见权限不够 } } }
运转过于上面如出一辙,在class类中我们能够定义要领,(上面的input与output是两个要领)而在Struct 构造体中不能定义要领,而且我们将People类中的属性指定为private 私有成员,外界对象person没法直接接见,只能经由过程People中指定的Public要领接见。举个例子吧: 当我俩打电话的时刻,我俩并没有面临面的交换,而是经由过程 手机 这个序言相互交换信息,此时 手机就能够看做你的一个public要领,你就是一个类中私有成员,我就是这个类实例化的一个对象。
以上就是C#进修日志13---类(Class)的声明与定义的内容,更多相干内容请关注ki4网(www.ki4.cn)!