五.继承

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的更多相关文章

  1. Third scrum meeting - 2015/10/28

    在一天的工作中明显发现到,无法和网站开发团队进行交流会严重导致我们的进程拖延,所以我们在现有的情况下也把大家的goal初步完成了,我们也对代码规范进行了详细的讨论,以及UI的设计完成,所以整个团队都真 ...

  2. Daily Scrum (2015/10/28)

    昨天DEV们完成了一部分代码风格的修整.今晚在与其他组进行交流时我们发现我们的代码是需要在服务器上运行的,而且服务器是需要配置的,而且据说需要花一些时间.所以在编写代码之前PM提出我们应该先把服务器搭 ...

  3. Daily Scrumming* 2015.10.28(Day 9)

    一.总体情况总结 今日项目总结: 1.前后端同一了API设计以及API权限认证.用户状态保存的开发方案 2.API以及后端模型已经开始开发,前端UEditor开始学习,本周任务有良好的起步 3.前后端 ...

  4. iOS 学习笔记 六 (2015.03.28)常见错误

    2015.03.28 1. property's synthesized getter follows Cocoa naming convention for returning 'owned' ob ...

  5. Contest2071 - 湖南多校对抗赛(2015.03.28)

    Contest2071 - 湖南多校对抗赛(2015.03.28) 本次比赛试题由湖南大学ACM校队原创 http://acm.csu.edu.cn/OnlineJudge/contest.php?c ...

  6. 背水一战 Windows 10 (28) - 控件(文本类): TextBox, PasswordBox

    [源码下载] 背水一战 Windows 10 (28) - 控件(文本类): TextBox, PasswordBox 作者:webabcd 介绍背水一战 Windows 10 之 控件(文本类) T ...

  7. 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 可以参考一下部 ...

  8. CentOS6.5升级内核到3.10.28 --已验证

    本文适用于CentOS 6.4, CentOS 6.5,估计也适用于其他Linux发行版. 1. 准备工作 确认内核及版本信息 [root@hostname ~]# uname -r 2.6.32-2 ...

  9. 使用yum快速升级CentOS 6.5内核到 3.10.28

    网上有不少升级CentOS内核的文章,如<CentOS 6.5 升级内核到 3.10.28>,大部分都是下载源码编译,有点麻烦. 在yum的ELRepo源中,有mainline(3.13. ...

  10. First Scrum Meeting (2015/10/18)

    会议是在昨晚进行的,本来早就应该写博了,可惜今天校园网炸个不停= =.刚修好就赶紧来发博客. 会议基本要素 会议主题:爬虫项目的核心技术讨论以及项目初期的工作分配 会议时间:2015.10.18 19 ...

随机推荐

  1. 使用docker试用各种软件及docker-ES设置

    试用开源软件的优劣势 由于现在容器化的热度,大部分软件都有docker official镜像,那么使用docker就是试用软件很好的方法: 优势: 1.可以免去安装部署的过程. 2.不会对当前系统环境 ...

  2. 小程序如何封装自定义组件(Toast)

    1.创建和pages 同级的component目录新建一个myToast目录 例如: 2.myToast.wxml文件内容: <!-- 自定义toast组件 --> <!-- nam ...

  3. CC2530的Flash

    CC2530F256内部集成一个增强型8051单片机,拥有8 KB SRAM和256 KB内部Flash存储器.内部Flash主要用来保存程序代码和常量数据.由于传统8051代码存储空间寻址范围只有6 ...

  4. JavaBean初识

    JavaBean是一种特殊的java类,是一个通过Java代码实现的可重用组件. 简单来理解就是,将一些重用性较高的代码进行组合封装,以降低代码的重复性,使得开发更加简洁高效,也便于管理和修改. Ja ...

  5. Java初始化块

    1.使用初始化块 [修饰符]{ //初始化块的可执行性代码 } 初始化块虽然也是Java类的一种成员,但它没有名字,也就没有标识,因此无法通过类.对象来调用初始化块.初始化块只在创建Java对象时隐式 ...

  6. P3440 [POI2006]SZK-Schools(费用流)

    P3440 [POI2006]SZK-Schools 每所学校$i$开一个点,$link(S,i,1,0)$ 每个编号$j$开一个点,$link(i,T,1,0)$ 蓝后学校向编号连边,$link(i ...

  7. uirecorder 启动webdriver服务报错

    在安装好uirecorder后,执行起来是各种错误. 不是少这个就是缺那个,也是因为自己对自动化测试知识太匮乏. 导致刚开始走自动化测试绕了很多弯路,报个错都不知所措.后来才知道要多看ERROR后面的 ...

  8. LGOJ P3834 【模板】可持久化线段树 1(主席树)

    代码 #include <cstdio> #include <iostream> #include <algorithm> using namespace std; ...

  9. Uniprot数据库

    Uniprot数据库是Universal Protein的英文缩写,是信息最丰富.资源最广的蛋白质数据库. UniprotKB由两部分组成: UniProtKB/Swiss-Prot 高质量的.手工注 ...

  10. jsp 遍历集合——关于获取集合的长度

    一,关于获取集合长度问题 在jsp页面中不能通过${list.size}取列表长度,而是 EL表达式不能获取集合的长度 如:${list.size} <%@ taglib uri="h ...