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 ...
随机推荐
- dos模式下切换电脑用户
启用管理员运行dos 然后输入net user adminstrator /active.yes 然后点击打开按钮 就可以切换电脑用户了
- Python 较为完善的猜数字游戏
import random def guess_bot(): bot = random.randint(1, 100) # time = int(input("你觉得能猜对需要的次数:&qu ...
- vscode中添加git
步骤: 下载Git客户端 配置环境变量 设置vscode与Git的关联 重启 步骤一: 该网址,下载即可. https://git-scm.com/downloads 步骤二: 计算机 > 属性 ...
- 在linux上安装python, jupyter, 虚拟环境(virtualenv)以及 虚拟环境管理之virtualenvwraper
一, 安装python31.下载python3源码 wget https://www.python.org/ftp/python/3.6.7/Python-3.6.7.tar.xz2.解压缩源码包,去 ...
- FairyGUI TextField
记录一个在使用FairyGUI的TextField时遇到的坑. TextField有一个文本模板功能,可以实现类似占位符的功能,如:{ number = 0 },然后我们可以在脚本中修改number的 ...
- android 模拟器 访问 localhost IIs Express 400错误
如果用安卓模拟器调试本机的网站,比如 localhost:63586,是访问不到的,返回结果是 400 错误.原因是模拟器上的localhost指向的默认是模拟器自己. 解决方法是:(1) 把安卓模拟 ...
- loj 3090 「BJOI2019」勘破神机 - 数学
题目传送门 传送门 题目大意 设$F_{n}$表示用$1\times 2$的骨牌填$2\times n$的网格的方案数,设$G_{n}$$表示用$1\times 2$的骨牌填$3\times n$的网 ...
- JS的深度克隆,利用构造函数原型深度克隆
我爱撸码,撸码使我感到快乐!大家好,我是Counter.今天来写写,JS中的深度克隆,这个在笔面试中,考的还是比较多的,主要是对象与数组的赋值,如果直接赋值的话,那么得到的是对象或者数组在堆里的地址, ...
- 解决win10 蓝牙设备只能配对无法连接 ,并且删除设备无效的问题
系统环境: win10家庭版 dell本 问题描述:蓝牙设备(比如蓝牙键盘,蓝牙音箱)出现无法连接的情况,打算删除已配对的设备,再重新配对连接.但删除设备后重启蓝牙,那些原本被删除的设备又自动配对上, ...
- python on sql
USE [DemoDb]GOexecute sp_execute_external_script @language = N'Python', @script = N'a = 1b = 2c = a/ ...