2017-06-26

面向对象三大特征:

封装 继承 多态

封装:方便多次调用;简化用户操作

为什么要使用继承:

1.相同代码出现两次:冗余代码!!!
2.设计类的时候会发现,很多类中具有相同的成员,为了减少代码的冗余,我们将这些相同的成员提取出来,单独的封装成了一个类,作为其他类的父类,或者叫基类.其他类这叫做这个类的子类,或者派生类.

继承的缺点: 打破类的封装性!

C#中所有的类都直接(无冒号:)或者间接(有冒号:)的继承于 Object类.

一个子类继承了一个父类,那么子类继承了父类的如下成员(能.出来的):
1.属性
2.函数(不含构造函数)

字段(private)虽然"继承"了,但是.不出来,因为它是父类这个类的,而不是父类某个对象的.

难点: 子类是否继承了父类的构造函数!!!!!
1.子类并没有继承父类的构造函数,因为在创建子类对象的时候,调用不到父类的构造函数.
2.但是,在创建子类对象的时候,会先执行父类的构造函数,也就是说,子类并没有继承父类的构造函数,但是会先调用父那个无参数的构造函数.因为父类有可能在自己默认的无参数的构造函数中对成员进行初始化,如果子类想要得到父类初始化后的成员,子类就要去调用父类默认的无参数的构造函数.
3.子类用有参数的构造函数创建对象的时候,也会先去调用父类默认的无参数的构造函数.

当我们在父类中重新写了一个有参数的构造函数后,默认的无参数的构造函数就不存在了.
解决方法:1.在父类中重新写一个无参数的构造函数;---这个方法基本不用.
2.在子类中显示的调用父类有参数的构造函数,使用关键字 :base

父类:public Person(string name,int age,char gender){...;}
子类:public Student(string name int age,char gender,int id):base(name,age,gender)
{ ... ;this Id = id;}

如果不写 :base(name,age,gender),子类用有参数的构造函数创建对象的时候,依然会先调用父类无参数的构造函数,如果父类没有显示的写出无参数的构造函数,会报错!
如果父类没有无参数的构造函数,子类也不能有,会报错!

this:代表当前类的对象,可以显示的调用本类的构造函数;
base:一个指向父类的引用,通过base可以调用父类的成员,不代表父类的对象.
new:1.隐藏父类的成员
2.创建对象

静态成员的好处:资源共享;
坏处:占内存,能不写尽量不写.

方法表 :类的方法的存放空间,里面有一块区域叫 静态存储区域,专门存放 类的 所有静态成员

继承的特性:
1.单根性:只有一个爹,干爹都不算(类是亲爹,object 接头都是干爹)
2.传递性:继承的成员可以一层一层往下传递.

访问修饰符(访问的权限):

1.private 私有的,只能在当前类的内部访问
2.public 公开的,在哪都可以访问
3.internal 只能在当前项目的内部访问,出了这个项目就访问不到了(项目可以理解为命名空间),类默认就是internal
4.protected 只能在当前类的内部,以及该类的子类中访问
5.protected internal

父类的访问权限不能比子类的访问权限低:
因为如果父类低于子类的话,父类的成员会暴露,别的项目可以通过子类访问父类的成员.

类 : internal < public 默认 internal
成员: 当前项目中 internal 的权限比protected大
但是跨项目,protected 比 internal 大,因为跨项目后,可以通过继承该类,然后访问 protected 修饰的成员.(不理解!!!)

跨项目访问:
1.添加要访问的项目的引用:
2.导入要使用的类所在的命名空间; using ***;

里氏替换原则:
1.子类可以复制给父类
2.如果父类中装的是子类对象,那么可以将这个父类转换为"对应"的子类对象,这样就可以调用子类的成员了.

Person p = new Person();
p. 这里是无法调用子类的成员;

Person p = new Student();
p. 这里也无法调用子类的成员;

Person p = new Student();
((Student)p). 这里就可以调用子类的成员;

我们使用两个关键字帮助我们实现类型转换:is as

is:判断是否能转换,返回值是 bool 类型,但是实际并没有转换

Person p = new Student();

if (p is Student){...}

as:进行类型转换,如果成功,返回对应的对象,如果失败则返回null

Person p = new Student();

Student s = p as Student;//

额外: string ss = string.Join("||", "213", true, 342,‘男‘); //结果为: 213||true||342||男
for+TAB(快捷方式)

开放封闭原则: 对程序的扩展开放,对代码的修改保持封闭

集合:

1.非泛型集合 : 长度不固定,类型不固定(对应数组:长度固定,类型固定)

ArrayList list = new ArrayList();
//list.Add(Object value)
list.Add("123");
list.Add(3123);
list.Add(true);
list.Add(new Person());
//list.Add(new int[] { 1,23,4,3,5,6,6,5}); 这样写,显示不出来具体的数字,需要用 is或者 as 强制转换
list.AddRange(new int[] { 1,2,3,4,5,6});
//list.Add(list);这样写,显示不出来具体的数字;
list.AddRange(list);

===>给集合添加单个元素用Add,添加数组和集合用AddRange

list.Clear():清空所有的数据
list.Remove(Object obj):写谁删谁(如果有重复的,删第一个)(和 for一起用的时候,容易出错喔!!删了下标就变了喔!)
list.RemoveAt(int index):下标是谁就删谁,没有这个下标就抛异常
list.RemoveRange(0, 2);从下标0的元素开始删,删2个.
list.Contains(Object obj);返回bool类型
list.Insert(1,"aaaa"); 在 下标1的位置插入aaaa;
list.InsertRange(1,new string[]{"aaa","bbb"}); 在 下标1的位置插入数组或者集合;
list.Reverse() 顺序反转
list.Reverse(int index,int count) 制定范围的元素顺序反转
list.Sort(); 升序排序,类型不一样报异常

list.Count 是指集合中实际包含的元素的个数.(注意和数组区分) int 类型
list.Capcity:集合中可以包含的元素的个数 int 类型
count变少,多的空间也销毁掉,但始终比count多

2.泛型集合

时间: 2024-10-03 14:55:43

2017-06-26的相关文章

团队作业4——第一次项目冲刺(Alpha版本)2017.4.26

2017.04.26 天气热. 时间:上午 9:35 ---10:10分 地点:陆大304实验室 会议内容:今天将昨天的的一些问题进行了讨论,以及针对助教提出的问题进行了分析,是因为我们昨天经过讨论后在任务中又加上了一些细节,导致了任务又多了一点点.随着时间的临近,项目Alpha版本即将截止,今天小组成员对任务有又进行了确认,齐心协力完成我们的任务. 1:每日讨论图片(拍摄者小组成员 黄睿) 2.任务分解图: 3.任务分配: 今天的整体分工如下: 武健男:负责今天的博客编写: 林俊鹏:询问实验室

http://stormzhang.com/opensource/2016/06/26/android-open-source-project-recommend1/

转载自:http://stormzhang.com/opensource/2016/06/26/android-open-source-project-recommend1/ 推荐他的所有博文~ 图片加载几乎是任何 Android 项目中必备的需求,而图片加载的开源库也越来越多,我们姑且在 GitHub 上搜索下 android image 关键字,出来的前五个按照 Star 数排序的项目如下: 可以看到前四个是大家比较熟知的图片加载库,有 UniversalImageLoader.Picass

2017.11.26【清华集训2017】模拟

T1 5483. [清华集训2017模拟11.26]简单路径T2 5484. [清华集训2017模拟11.26]快乐树T3 5485. [清华集训2017模拟11.26]字符串 T1 结论题,结论很显然任意两条路径权异或后,会将两条路径的交的贡献删去.然后用个桶存一下出现过的异或和,暴力判一下就可以了 code 1 #include<cstdio> 2 #include<cmath> 3 #include<cstring> 4 #include<algorithm

2017.06.29数据挖掘基础概念第二.三章

第二章21.研究的属性类型标称属性:值是一些符号或事物的名称,代表某种类型.编码或状态二元属性:是一种标称属性,只有两个类别或状态,又称布尔属性序数属性:是一种属性,其可能的值之间具有有意义的序或秩评定,但是相续值之间的差是未知的数值属性:是定量的,即他是可度量的量,可用整数或实数值表示(区间和比率标度)22.数据散布常见的度量量(数据如何分散的方法/识别离群点)极差 四分位数.四分位数极差.五数概括图.方差和标准差23.审视数据的图形条形.饼图.线图.分位数图.分位数-分位数图.直方图和散点图

分布式技术一周技术动态 2016.06.26

分布式系统实践 1. 微信自研生产级paxos类库PhxPaxos实现原理介绍 https://mp.weixin.qq.com/s?__biz=MzI4NDMyNTU2Mw==&mid=2247483695&idx=1&sn=91ea422913fc62579e020e941d1d059e&scene=1&srcid=0622W8Tr7wxlyNqJPBzr4iWK&key=77421cf58af4a6537009f11daea42e134e8766d15

2017.5.26暴力赛解题报告

预计分数:T1:40AC+60TLE T2:40AC+60TLE   T3:10AC+90TLE 总分=90 实际分数:T1:100AC+0TLE T2:80AC+20TLE   T3:20AC+80TLE 总分=200 感想:数据水的一逼!! 题目实际难度: T1:提高/提高+ T2:提高+ T3:提高+/省选- 我眼中的难度 T1:普及 T2:普及- T3:入门难度 2039. 树的统计 ★★   输入文件:counttree.in   输出文件:counttree.out   简单对比 时

18.06.26 16年程设期末10:游览规划

描述 一年一度的暴雪嘉年华(BlizzCon’16)即将盛大开幕,作为贪玩的助教小J,自然翘掉了程设期末前往参加.本届嘉年华为期m天,在这24*m小时的时间里,观众买券入场后方可体验各种免费及付费的游戏项目.参加本届嘉年华,首先需要在现场购买入场券,现场可以购买的入场券有三种,允许叠加购买使用: 单日券:售价100美金,购买后可以进入会场游玩24小时: 双日券:售价150美金,购买后可以进入会场游玩48小时: 三日券:售价200美金,购买后可以进入会场游玩72小时. 买券进入会场后,就可以在规定

2017.4.26 编程之路启程!

对编程我总觉得有一种缘分和宿命; 从接触电脑开始,我就想学编程,那时候是C++; 2010年安卓系统闻世,我想要学,可惜不能如愿; 现在想想,那个时候坚持学下去,现在也是一们技能; 如今,成家立业. 越能体会,人要有一技傍身; 如此,才能立足于世; 我选择学java,也是想要继续当初的那个愿望; 有些东西,错过了就错过了,不可挽回; 在编程的世界; 一切皆有可能!

2017/07/26 工作日志

第二天一早应该是从请教前辈开始的,先问了任务相关的问题,开始有大致的框架,然后向另一个前辈了解TFS的用法,在这一过程中发现了之前部署IIS的一个问题:部署多个网站效率太低.其实只要新建一个网站,然后再这个网站里使用"添加应用程序"选择相应的物理路径就可以,通过相应的应用程序的名字就可以访问网站,并且在这一网站下的应用程序都使用同一个应用程序池,这样的话,设置也只需一次. 下午经理正好坐在旁边,问到了指派任务的报表问题,知道了公司有报表专用的项目,又去部署这个项目.遇到了类库引用的问题

【第五组】第十三次冲刺例会纪要 2017/7/26

第十三次冲刺例会纪要 开发小组:Hunger Killer 冲刺经理:衣俊霖 小组成员:张竣杰,董泽昊,赵美,宋寅瑜,徐志国 A:张竣杰 负责部分:管理员界面 昨日所做工作:研究关于下拉列表刷新问题 遇到的问题:尚未解决 今日计划:尝试解决,优化界面 B:衣俊霖 负责部分:注册界面 昨日所做工作:记住密码已实现,优化界面 遇到的问题:构思用户服务的函数 今日计划:写用户服务,写登录后端 C:董泽昊 负责部分:趣味决策 昨日所做工作:图片上传显示解决 遇到的问题:界面急需优化 今日计划:链接真·数