ASP.NET-第三天-加强课程
第三天
编程原则: 能用接口, 就不用抽象类, 能用抽象类, 就不用普通类
构造函数的参数名相同,参数不同,就是构造函数的重载;
多态的作用:把不同的子类对象都当作父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,以适应需求的不断变化
里氏替换原则
(当需要父类对象的时候,可以给一个子类类型的对象)
1.父类引用指向子类对象person p=new chinese(); (隐式类型转换)
(可以再将父类显示类型转换成子类;)chinese cn1=(chinese) p;
If(cn1 is chinese) //尽量不要使用这种判断一个对象是否属于某个类型:
当通过as进行类型转换的时候, 如果转换是被也不报异常,只会返回null
系统自动进行判断
2.父类对象不能够替换子类;
GetType是通过反射进行验证实现的,非常耗费资源, 所以尽量不要使用
寻找父类型 //object是没有父类的,所以object的父类是null;
抽象类定义的是公共的实现和能力
抽象类为子类提供所需要的成员
抽象类中的成员既可以有实现也可以无实现
抽象类必须由其子类实现它的抽象成员(除非子类也是抽象类)
一个类只能继承一个抽象类(类的单根继承性)
虚方法和抽象方法的区别
虚方法必须有实现,抽象方法必须没有实现
抽象方法必须在抽象类中声明,虚方法可以出现在抽象类中
抽象方法必须在子类中重写,虚方法可以被重写
实现多态的主要手段:
1.虚方法virtual
2.抽象方法abstract
3.接口
普通类中,可以有抽象方法,那么这个类就成了抽象的了;
抽象:
1.抽象成员必须标记为abstract,并且不能有任何实现;2.抽象方法不能有任何方法体.(不能有任何实现)
3.抽象成员必须在抽象类中,不能再普通类中, 即实例中
4.虚拟成员和抽象成员不能是private 私有的
5.抽象类不能被实例化 //抽象类就是被继承的;
6.实例化的时候必须有构造函数, 抽象类中可以有构造函数,但不能被实例化
7.抽象类中可以有实例成员也可以有抽象成员;
当父类中的方法没有默认实现, 父类也不需要实例化时, 就可以把父类写成抽象类; 就像动物的叫声一样,不需要知道默认的实现;
如果父类中的方法有默认的实现,并且父类需要被实例化,这时可以考虑将父类定义成一个虚方法来实现多态;
类中的成员不写访问修饰符,默认是私有的 private
接口:
接口就是一种规范, 协议 ,约定好遵守某种规范就可以写通用的代码
定义了一组具有各种功能的方法 (只是一种能力,没有具体实现,想抽象方法一样,”光说
不做”)
接口存在的意义:多态, 多态的意义: 程序可扩展性, 最终 --节省成本,提高效率.
接口解决了类的多继承的问题;
接口解决了类继承以后体积庞大的问题;
接口之间可以实现多继承;
1.接口中只能包含方法 (方法. 属性. 索引器. 事件)
2.接口中的方法也不能有任何实现 (就像抽象方法一样,直接加一个分号)
3.接口中的成员不能有任何访问修饰符(哪怕是public) 默认为public
4.接口不能实例化
5.实现接口的类, 必须实现接口中所有的成员;
6.类不能多继承, 所以在某些情况下,只能用接口来代替,因为 接口可以多实现
7.接口的主要目的: 就是为了实现多态;
8.当一个类同时继承了某个类,并且也是实现了某些接口的时候,必须要将继承的类写在第一个, 就是最前面;
9.当多个类型,都具有某个或某几个功能时(方法), 但是这几个类型又分属于不同的系别,(这几个类型没有共同的父类,这时就不能用抽象类了.), 所以这时,为了实现多态就可以考虑吧这几个类型共有的方法提取到一个接口中, 让这几个类型分别实现这几个接口;
10.接口与接口之间的继承, 类与接口之间叫实现,
接口尽量简单,不要有太多的方法, 可以编写多个接口,在每个接口中,分别定义方法; 具体根据实际做;
11.实现接口的时候直接写方法就行,不要写override;
转载于:https://www.cnblogs.com/mafacai/archive/2012/12/08/2809283.html
ASP.NET-第三天-加强课程相关推荐
- Asp.net支持三种类型的cache[转]
from:http://www.cnblogs.com/thomasnet/archive/2006/11/26/573104.html Asp.net支持三种类型的cache 想写一个技术快速概述, ...
- [导入]ASP.NET MVC框架开发系列课程(2):一个简单的ASP.NET MVC应用程序.zip(13.70 MB)...
讲座内容: 使用ASP.NET MVC框架进行开发与ASP.NET WebForms截然不同.本次课程将通过官方的示例程序简单了解一下ASP.NET MVC应用程序的结构与特点. 课程讲师: 赵劼 M ...
- 深入浅出 ASP.NET Core 与 Docker 入门课程说明
点击蓝字"角落的白板报"关注我哟 加个"星标★",好文必达! 深入浅出 ASP.NET Core 与 Docker 入门课程说明 <深入浅出 ASP.NE ...
- 数据库系统概论王珊编写的第三章学生-课程数据库
一.前言 因为考研需求,我于是将数据库系统概论王珊编写的第三章学生-课程数据库的三张表实现了一下,为了简化操作,我没有实现部分外码功能. 我用的是MySQL实现的 二.正文 /*3. 创建学生表Stu ...
- netcore docker_深入浅出 ASP.NET Core 与 Docker 入门课程目标说明
课程目标说明https://www.zhihu.com/video/1241137370310508544 <深入浅出 http://ASP.NET Core 与 Docker >是一门新 ...
- 【重要】2023年上半年有三AI新课程规划出炉,讲师持续招募中!
2023年正式起航,想必大家都已经完全投入到了工作状态中,有三AI平台今年将在已有内容的基础上,继续进行新课程开发,本次我们来介绍今年上半年的课程计划,以及新讲师招募计划. 2023年新上线课程 我们 ...
- ASP.NET的三种开发模式
前言 ASP.NET 是一个免费的Web开发框架,是由微软在.NET Framework框架中所提供的,或者说ASP.NET是开发Web应用程序的类库,封装在System.Web.dll 文件中.AS ...
- asp.net ajax怎样传值,JQuery在asp.net中三种ajax传值
1)通过webservice,注意去掉注释[System.Web.Script.Services.ScriptService]这行前的注释 2)通过aspx.cs文件中的静态方法 3)通过aspx文件 ...
- [导入]ASP.NET MVC框架开发系列课程(3):URL导向.zip(16.66 MB)
讲座内容: ASP.NET MVC框架中一个关键特性就是基于URL的导向.本次课程将讲解URL Routing机制的使用. 课程讲师: 赵劼 MSDN特邀讲师 赵劼(网名"老赵". ...
最新文章
- 技术界与翻译界的交锋:机器翻译离我们还有多远? | 清华AI Time
- [转] 视频直播前端方案
- Windows Server 2003活动目录:管理特征
- STM32开发 -- WIFI那些事儿(一)
- 计算机视觉、机器学习相关领域论文和源代码大集合--持续更新……
- GitHub 发布 2018 年开源项目趋势预测
- 在Eclipse中有效使用JUnit
- 数字图像处理--颜色选择
- 容器、Docker、虚拟机,别再傻傻分不清
- php mysql errorcode_PHP errorCode()和errorInfo():PDO中的错误处理
- Android Glide数据更新及内存缓存、硬盘缓存清理
- IP地址基础和子网规划之其一
- 【意见征集补充】09'博客园T恤设计
- JavaScript Date Format
- 结构方程模型及PLS估计【评价】
- GB28181国标流媒体服务(LiveGBS)-支持海康8700等联网网关通过接入实现web端无插件直播
- Python处理Excel,学会这十四个方法,工作量减少大半!
- 【20211207】【雷达】毫米波雷达(一)—— 基本原理
- GitHub疯传,这个Leetcode刷题手册到底有多流弊?
- 【Java攻城狮宝典】04-for循环