C#中的类
C#中的类:
一、类的概念 类是具有相同特征的事物的抽象。
二、类的成员 类的成员包括:
(1)数据成员。(亦可称作类的属性) (2)成员函数。(亦可称作类的方法)
三、对象 类的一个实例称作对象。必须具体到某一对象时候,才能谈它的属性和方法。
void main()
{
Human human1()=new Human() ;
human1.name="张三" ;
human1.age="18" ;
human1.height=175 ;
human1.weight=68 ;
human1.eat() ;
human1.sleep() ;
human1.work() ;
}
四、构造函数和析够函数
类中有两种比较特殊的函数:
(1) 构造函数 构造函数在创建对象时被自动调用,用来执行对象的初始化操作。构造函数名总是和类名相同。
(2)析构函数 析构函数在释放对象时被调用,用来在删除对象前做一些清理工作。
五、面向对象编程的特点:
(1)代码的模块化 程序代码的模块化使得程序结构清晰,层次分明。
(2)代码的可重用性(亦称作复用性)方便了代码的横向(项目之间)和纵向(不同时期)移植,减少了开发人员的工作量,提高了开发效率。
(3)继承 面向对象编程过程中,子类(派生类) 可以继承父类(基类)的所有属性和方法。这有些类似于生物科学上的遗传性。我们常说有其父必有其子,说的是儿子继承了父亲的某些特征和秉性。
下面的例子演示了子类是如何继承父类的属性和方法的:
Using System ;
public class Parent //定义父类
{
public Parent() //父类的构造函数
{
Console.WriteLine("构造父类\n") ;
}
public void say() //父类的方法
{
Console.WriteLine("调用父类的函数\n") ;
}
}
public class Child:Parent //定义子类
{
public child() //子类的构造函数
{
Console.WriteLine("构造子类\n") ;
}
}
public static void Main()
{
Child a=new Child() ;
a.say() ; //继承父类的方法
}
程序编译运行后的结果如下: 构造父类 构造子类 调用父类函数 (
4)重载 C#类中允许存在同名的函数。在对象被创建后,这个对象调用的是这些同名函数的哪一个,要看调用时加载的函数参数的个数和类型而定。这就是我们常说的重载。
(5)多态
多态性是指派生类可以重载基类定义的虚函数。虚函数就是有virtual修饰的、在基类中没有具体实现的函数。
当基类使用虚函数时,派生类有多种实现该函数的方法。
Using System ;
public Class Parent //父类
{
public Parent()
{
Console.WriteLine("构造父类\n") ; //父类的构造函数
}
public virtual void say() //使用关键字virtual定义虚函数
{ ... }
}
public class Child1:Parent //子类Child1
{
public Child1() //子类Child1的构造函数
{
Console.WriteLine("构造函数\n") ;
}
public override void say()
{
Console.WriteLine("这是子类1重载的的虚函数\n") ; //使用关键字override来实现
//虚函数的重载 }
}
public static void Main()
{
Child1 child1=new Child1() ; //调用父类的虚函数
child1.say() ;
}
程序编译运行的结果如下: 构造父类 构造子类
这是子类1重载的虚函数say()
abstract:标识一个可以扩展但不能被实体化得、必须被实现得类或方法;
as:一个转换操作符,如果转化失败,就返回null;
base:用于访问被派生类或构造中得同名成员隐藏的基类成员;
bool:表示布尔值的简单类型;
break:用于从loop或switch语句中推出得跳转语句;
byte:表示8位长度无符号整数的简单类型;
case:指定在switch语句中的一个标签。如果标签中指定的常量与switch表达式的值匹配,则与标签关联的语句就被执行;
catch:定义一个代码块,在特定类型异常抛出时,执行块内代码。参加try和finally;
char:表示16位Unicode字符的简单类型;
checked:既是操作符又是语句。确保编译器和运行时检查整数类型操作或转换时出现的溢出;
class:指明一个声明得类类型声明;
const:标识一个可在编译时计算出来的变量值,即一经指派不可修改得值;
continue:用于返回循环顶部的跳转语句;
decimal:表示128位高精度十进制数的简单类型;
default:在switch语句中,指定一组语句,如果前面没有匹配得case子句,就执行这些语句;
delegate:指定一个声明为一种委托类型。委托把方法封装为可调用实体,能在委托实体中调用;
do:一个条件语句,无论条件是否满足,都执行至少一次;
double:表示64位双精度浮点值得简单类型;
else:if条件语句的一部分,如果条件不为真则执行else后面的语句。
enum:表示一个已命名常量群集得值类型;
event:允许一个类或对象提供通知得成员,它必须是委托类型;
explicit:一个定义用户自定义转换操作符的操作符,通常用来将内建类型转换为用户定义类型或反向操作。必须在转换时调用显式转换操作符;
extern:标识一个将在外部(通常不是C#语言)实现的方法;
false:一个布尔字面值;
finally:定义一个代码块,在程序控制离开try代码块后执行。参见try和catch关键字;
fixed:在一个代码块执行时,在固定内存位置为一个变量指派一个指针;
float:表示32位单精度浮点值得简单类型;
for:定义一个循环语句,只要指定条件满足就继续执行;
foreach:用于遍历一个群集的元素;
goto:一个跳转语句,将程序执行重定向到一个标签语句;
if:一个条件语句,根据一个布尔表达式的值选择一个语句执行;
implicit:一个操作符,定义一个用户定义的转换操作符。通常用来将预定义类型转换为用户定义类型或反向操作。隐式转换操作符必须在转换时使用;
in:foreach语句遍历语法的一部分,被放在变量名与要遍历的群集之间;
int:表示32位带符号整数值的简单类型;
interface:将一个声明指定为接口类型,即实现类或构造必须遵循的合同;
internal:一个访问修饰符。内部代码元素只可由同一装配件内的其他类型访问。装配件可以是DDL或EXE文件;
is:比较两个对象类型得比较操作符;
lock:用在多线程程序中,为变量设置一个互斥锁(mutex);
long:表示64位带符号整数值的简单类型;
namespace:定义一个逻辑组的类型和命名空间;
new:用于调用构造器的操作符。同时,也是一个修饰符,用来隐藏而非重载拥有同样签名得一个继承方法;
null:表示引用类型中等同于0的字面值;
object:一个预定义引用类型,表示所有引用类型得终极基类。也是预定义类型System.Object的别名;
operator:用来声明或多载一个操作符;
out:标识一个参数值会受影响得参数,但在传入方法时,该参数无需先初始化;
override:一个修饰符,表明一个方法将覆载一个虚方法或抽象方法,或一个操作符将覆载基类中定义的同名操作符;
params:声明一个参数数组。如果使用,必须修改指定的最后一个参数。允许可选参数;
private:一个访问修饰符。私有成员只能在定义该成员得类型内部访问;
protected:一个访问修饰符。保护成员只能在定义该成员得类型或派生类型中的访问;
public:一个访问修饰符。公有成员可以在定义该成员得类或命名空间内外自由访问;
readonly:标识一个变量的值在初始化后不可修改;
ref:标识一个参数值可能会受影响的参数;
return:一个用于跳出方法的跳转语句。执行返回到方法调用者;
sbyte:表示8位带符号整数的简单类型;
sealed:防止类型被派生,防止方法和property被覆载;
short:表示16位带符号整数值的简单类型;
sizeof:一个操作符,以byte为单位返回一个值类型的长度;
stackalloc:返回在堆上分配的一个内存块的指针;
static:静态成员与它在其中被声明得类型相关联,而不是与类型得实体相关联;
string:一个表示Unicode字符串得预定义引用类型。是System.String预定义类型的别名;
struct:是一种值类型,可以声明常量、字段、方法、property、索引器、操作符、构造器和内嵌类型;
switch:一个选择语句,它执行与表达式匹配标签相关联的语句列表;
this:引用一个类型的当前实体; throw:导致抛出一个异常;
true:一个布尔字面值;
try:异常处理代码块得组成部分之一。try代码块包括可能会抛出异常的代码。参阅catch和finally关键字;
typeof:一个操作符,返回传入参数的类型;
uint:表示32位无符号整数值的简单类型;
ulong:表示64位无符号整数值的简单类型;
unchecked:禁止溢出检查;
unsafe:标注包含指针操作得代码块、方法或类;
ushort:表示16位无符号整数值的简单类型;
using:当用于命名空间时,using关键字允许访问该命名空间中的类型,而无需指定其全名。也用于定义finalization操作的范围;
virtual:一个方法修饰符,标识可被覆载的方法;
void:无返回值方法的返回类型;
volatile:标识一个可被操作系统、某些硬件设备或并发线程修饰的attribute;
while:while条件语句根据条件执行一个语句零次或多次。do语句中的while部分指定循环中止条件。