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,不能被其他类继承,但可以继承其他类。
- noteBook2.14-C#基础第十四天
- noteBook2.3-C#基础第三天
- noteBook2.5-C#基础第五天
- noteBook2.7-C#基础第七天
- noteBook2.8-C#基础第八天
- noteBook2.9-C#基础第九天字符串
- noteBook2.2-C#基础第二天
- noteBook2.4-C#基础第四天
- noteBook2.6-C#基础第六天
- noteBook2.10-C#基础第十天
- noteBook2.11-C#基础第十一天
- noteBook2.12-C#基础第十二天
- noteBook2.13-C#基础第十三天
- noteBook2.15-C#基础第十五天
- noteBook2.16-C#基础第十六天
- noteBook2.17-C#基础第十七天
- C#第十四天MD5加密
- android基础_第十四天
- cocos2dx-lua 实现tableView来加载大量的Item,弃用listView啦
- 集训Day6 T1 次方的运算
- shell script中的 ${a}和$a有什么区别?
-  |"|&|<|>等html字符转义
- 洛谷P1280 尼克的任务(dp)
- noteBook2.14-C#基础第十四天
- JDBC小入门
- TensorFlow学习-- 变量Variables/ Fetch/ Feed
- Java程序中的数据源与JNDI
- 欢迎使用CSDN-markdown编辑器
- linux基础之文件权限和目录配置
- next_permutation(排列组合)函数的用法
- win8 下安装 ubantu16.04(双系统)+ ubantu无线上网
- Java访问权限