noteBook2.14-C#基础第十四天

来源:互联网 发布:js获取style属性值 编辑:程序博客网 时间:2024/06/03 13:37

多态(让一个对象能够表现出多种的状态,即类型)

三种方法:

a.提供的类中能够抽象出一个父类,且父类中必须写几个类共有的一个方法,在不知道怎么写这个方法的情况下用抽象类;

b.若抽象出来的父类中的方法可以写,并需要创建父类的对象,用虚方法;

c.给出的类中根本找不出父类,但都有一个共同的能力,用接口(多继承情况)。

1.虚方法

将父类的方法标记为虚方法,使用关键字Virtual,这个函数可以被子类重新写一遍,子类需要加关键字Override;

**调用的仍然是父函数,只是在子类中重新写了一遍,调的是被子类重写的方法。

2.抽象类

当父类中的方法不知道如何实现时,可以考虑将父类写为抽象类,将方法写成抽象方法;抽象方法没有方法体。

方法写成抽象方法要点:

a.抽象成员必须标记为abstract,并且不能有任何实现;

b.抽象成语必须在抽象类中;

c.抽象类不能被实例化;(即不能创建对象,因此只能创子类对象)//Animal a=new Dog();

d.子类继承抽象类后必须把父类中的所有抽象成员都重写;(除非子类也是一个抽象类,则可以不重写)

e.抽象成员的访问;

f.抽象类中可以包含实例成员,且可以不被子类实现;

g.抽象类是有构造函数的,虽然不能被实例化;

h.如果父类中的抽象方法有参数,那么继承此父类的子类在重写父类的方法时,也必须传入对应参数;若父类的抽象方法中有返回值,那么子类重写时也要传入对应返回值。

**如果父类中的方法有默认的实现,并且父类需要被实例化,这时可以考虑将父类定义成一个普通类,用虚方法来实现多态;如果弗雷中的方法没有默认实现,父类也不需要被实例化,则可以将该类定义为抽象类。

3.接口

访问修饰符

Public,Private,Protected

Internal:只能在当前项目中访问,在同一项目中,internal与Public权限一样;

能修饰类的只有Public,Internal;

*子类的访问权限不能高于父类,否则会暴露父类成员。

值传递&引用传递

值类型在复制的时候传递的是这个值本身;

引用类型在复制时传递的是对这个对象的引用;(例如地址)


p1,p2地址相同,改变其中一个都会变。

**特殊情况

string s1="男";

string s2=s1;

s2="李四";

//结果s1为男,s2为李四;**因为字符串的不可变性。

序列化&反序列化

序列化:将对象装换为二进制

反序列化:二进制转换为对象

作用:传输数据

[Serializable]将序列标记为可以被序列化

//

BinaryFormatter bf=new =BinaryFormatter();

bf.Serializable();

bf.Deserializable();

部分类:partial;

密封类:sealed,不能被其他类继承,但可以继承其他类。

原创粉丝点击