2015-10-28 C#4
五.继承
5.1 父类又称(基类,超类)是被继承的类,子类又称派生类。
5.2 A:B,A就叫子类,B叫父类,B里面所有的成员(字段,方法)都会被A继承。 B里面的私有成员,A也是继承下来了的,只是没有访问权限。
5.3 A:B B:C ===》A:C
5.4 任何类型的基类是Object类
5.5 使用sealed关键字,其他类无法继承此类,代表密封类 :sealed class Person{}
5.6 A:B B里面有SayHi方法,用A的对象调用SayHi的时候,首先调用的是B里面的构造方法,然后是A的构造方法,最后才是SayHi,如果B上面还有继承的类,则先调用该类的构造方法
5.7 A:B,A和B里面都有一个方法SayHi,默认情况下,运用A的对象调用SayHi的时候,调用的是子类的SayHi,父类的被隐藏了。
注:new:1.实例化对象2.隐藏一个类的方法
5.8 重写/覆写
A:B,A和B都有一个方法SayHi,当B里面的SayHi方法是一个虚方法(virtual)的时候,A里面的SayHi才能被覆写/重写,通过关键字override重写
ru: public virtual/override void SayHi(){}
构造函数不能被复写
5.9里氏替换原则:子类对象可以赋值给父类变量,反之不成立
Person p=new Chinese();√
A:B,A和B里面都有一个方法SayHi,当 B b=new A(), b.SayHi()默认情况下(没有被覆写)的时候,就近原则调用的是父类。
如果sayhi被覆写,调用的是子类。
六.多态
6.1 多态分为重载(overload)和覆写(override)
重载:方法名相同,方法里面的参数个数或者类型不同。
6.2 只有父类的虚方法(virtual)才能被子类覆写,子类实现覆写用关键字override,如果不加override就隐藏了父类的方法(需要加上关键字new,eg: public new static void aa())
6.3 静态方法不能被覆写,但可以被隐藏
6.4 静态类里面只能有静态成员
6.5 静态的成员不能带override ,virtual ,abstract
七.接口,抽象类,泛型
7.1 抽象类、抽象方法
1. abstract +类名,abstract+方法名
2. 抽象类不能被实例化
3. 抽象方法的作用是为子类提供一个统一的接口,抽象方面里面只有声明,没有实现
4. 一个类一旦继承了一个抽象类,就必须实现对该抽象类里面所有的抽象方法的实现
5. 一个抽象类里面可以有非抽象方法,但是一旦一个类里面有抽象方法,该类就为抽象类了
6. 抽象方法在声明后用一个;结束,不需要用{}
7.抽象方法在覆写的时候不需要声明为虚方法
public abstract class Program
{
public abstract void A(); public abstract void B();
}
public class C : Program
{
public override void A()
{
Console.WriteLine("China");
} public override void B()
{
Console.WriteLine("nihao");
} public static void Main()
{
C me = new C();
me.A();
}
}
7.2接口
1. Interface +类名
2. 接口用来实现多继承,一个类只能有一个父类,但可以继承于多个接口class A :B,C //类是单继承,接口是多继承
3. 接口是一种特殊的抽象类,它里面规定得更严格,里面的方法只能为抽象方法
4. 定义一个接口的时候,一般为缺省,即interface +类名,前面自动加上了public abstract,定义接口中的方法时,也只需要写返回类型 +方法名即可,因为也默认为 public abstract
5. 接口里面的所有成员都是公共的,抽象类里面的成员可以是私有的,公共的,受保护的
6. 一个类继承与一个接口,就必须完成该接口中所有方法的实现
interface Interface1 ///新建接口
{ void A();
void B(); }
class Class3:Interface1
{
public void A() {
} public void B(){
} }
2015-10-28 C#4的更多相关文章
- Third scrum meeting - 2015/10/28
在一天的工作中明显发现到,无法和网站开发团队进行交流会严重导致我们的进程拖延,所以我们在现有的情况下也把大家的goal初步完成了,我们也对代码规范进行了详细的讨论,以及UI的设计完成,所以整个团队都真 ...
- Daily Scrum (2015/10/28)
昨天DEV们完成了一部分代码风格的修整.今晚在与其他组进行交流时我们发现我们的代码是需要在服务器上运行的,而且服务器是需要配置的,而且据说需要花一些时间.所以在编写代码之前PM提出我们应该先把服务器搭 ...
- Daily Scrumming* 2015.10.28(Day 9)
一.总体情况总结 今日项目总结: 1.前后端同一了API设计以及API权限认证.用户状态保存的开发方案 2.API以及后端模型已经开始开发,前端UEditor开始学习,本周任务有良好的起步 3.前后端 ...
- iOS 学习笔记 六 (2015.03.28)常见错误
2015.03.28 1. property's synthesized getter follows Cocoa naming convention for returning 'owned' ob ...
- Contest2071 - 湖南多校对抗赛(2015.03.28)
Contest2071 - 湖南多校对抗赛(2015.03.28) 本次比赛试题由湖南大学ACM校队原创 http://acm.csu.edu.cn/OnlineJudge/contest.php?c ...
- 背水一战 Windows 10 (28) - 控件(文本类): TextBox, PasswordBox
[源码下载] 背水一战 Windows 10 (28) - 控件(文本类): TextBox, PasswordBox 作者:webabcd 介绍背水一战 Windows 10 之 控件(文本类) T ...
- 4分钟apache自带ab压力测试工具使用: 2015.10.4
2015.10.44分钟apache自带ab压力测试工具使用:win8.1 wampserver2.5 -Apache-2.4.9-Mysql-5.6.17-php5.5.12-64b 可以参考一下部 ...
- CentOS6.5升级内核到3.10.28 --已验证
本文适用于CentOS 6.4, CentOS 6.5,估计也适用于其他Linux发行版. 1. 准备工作 确认内核及版本信息 [root@hostname ~]# uname -r 2.6.32-2 ...
- 使用yum快速升级CentOS 6.5内核到 3.10.28
网上有不少升级CentOS内核的文章,如<CentOS 6.5 升级内核到 3.10.28>,大部分都是下载源码编译,有点麻烦. 在yum的ELRepo源中,有mainline(3.13. ...
- First Scrum Meeting (2015/10/18)
会议是在昨晚进行的,本来早就应该写博了,可惜今天校园网炸个不停= =.刚修好就赶紧来发博客. 会议基本要素 会议主题:爬虫项目的核心技术讨论以及项目初期的工作分配 会议时间:2015.10.18 19 ...
随机推荐
- 如何在Linux 中获取硬盘分区或文件系统的UUID?
作为一个 Linux 系统管理员,你应该知道如何去查看分区的 UUID 或文件系统的 UUID.因为现在大多数的 Linux 系统都使用 UUID 挂载分区.你可以在 /etc/fstab 文件中可以 ...
- mysql恢复备份数据时,部分表数据丢失的问题
原因:是由于默认的通信缓冲区的最大长度为50M(max_allowed_packed). 处理办法: //查看当前max_allowed_packet的大小 show global variables ...
- Windows 安装配置MongoDB
1.安装 下载安装包 直接下一步. 2.添加环境变量 3.bin同级目录下新建data文件夹,data文件夹下新建db和log文件夹 4.输入命令启动mongodb服务 mongod --dbpath ...
- THINKPHP and or 模板语句书写
select * from xx where (a = 22 or b = 333) or (c=11 and d=22) $where_1['a'] = array('eq', '222'); $w ...
- httplib和urllib2常用方法
都是几年前用过的,现在翻出来记录一下. import httplib import urllib2 import socket ##---------------------------------- ...
- 2019充值新骗局手游折扣App靠谱程度一览表
随着互联网的快速发展,游戏产业也迎来了盛开的春天.特别是进入网络游戏时代后,来自世界各地的朋友,甚至来自地球村的朋友一起玩游戏.在这个阶段,游戏制作者还专注于设计副本,活动,皮肤和充值.无论你是否关心 ...
- centos7忘记密码解决办法
centos7重置密码: centos7一改以往风格,很多方面都做了改进,尤其是修改root密码,一般centos6以前直接进入grub然后从单用户模式进去就可以修改,可centos7不同,笔者今天修 ...
- 部署springboot项目时 打包成jar时包中html,js,css文件缺失
问题 打包出来的jar包里面没有html,js,css文件 解决方案 在pom.xml文件下的build选项中的src/main/resources的目录下 添加配置 <build> &l ...
- WEB前端基础知识点
因为要告知浏览器的解析器用什么文档标准解析这个文档,所以在文档的开头要写上文档类型声明,H5的文档类型声明要比H4文档类型声明简洁的多.因为H5不基于SGML(标准通用标记语言),所以不需要对DTD文 ...
- C++_day7_继承
#include <iostream> using namespace std; class Human{ public: Human(string const& name, in ...