.NET 面向对象基础
封装
- 实现方式
- 访问方法和修改方法
- 属性
继承
- 语法
public class A |
- 代码重用
- is-a:继承
- has-a:包含、委托模型
- 基类
- 初始化调用
默认在子类的构造函数执行之前调用基类的构造函数,之后为基类的公共属性创建状态。实现子类时最好是显示的调用合适的基类的构造函数,减少对继承的初始化成员的调用次数。
- 关键字
- base:子类需要调用基类的字段或方法时可以使用该关键字
- 密封类
密封类是不可以被继承的,在设计工具类时对类进行密封是很有意义的
- 关键字
- sealed
- 代码示例
public sealed class D |
- 嵌套类
在类或结构内部定义的类型称为嵌套类型,不管外部类型是类还是结构,嵌套类型均默认为 private,但是可以设置为 public、protected internal、protected、internal 或 private。嵌套类型(或内部类型)可访问包含类型(或外部类型)。
- 语法
class Container |
- 访问包含类型
将其作为构造函数传递给嵌套类型
public class Container |
- 实例化
Container.Nested nest = new Container.Nested(); |
多态
- 方法重写
由子类重新定义基类中的方法,可使用base关键字调用基类的方法
- 关键字
- virtual:基类中的需要子类实现的方法可以使用该关键字
- override:派生类需要实现基类中的方法可以使用该关键字
- 成员投影
如果子类中定义了一个成员与基类的成员一致,则我们称之为成员投影。可以使用new关键字调用新成员而不是被替换的旧成员,将子类实例强制转换成基类实例时才可以调用隐藏的基类成员。一般在无法更改基类代码的情况下可以使用此方法进行成员替换。
- 关键字
- new
- 密封虚成员
用于密封从基类继承的虚方法,以防止本类的派生类重写此方法。
- 关键字
- sealed:使用 sealed 关键字可以防止继承以前标记为 virtual 的类或某些类成员。
- 代码示例
public class D : C |
- 抽象类
- 关键字
- abstract :使用 abstract 关键字可以创建仅用于继承用途的类和类成员,即定义派生的非抽象类的功能。
- 抽象方法
抽象类也可以定义抽象方法。方法是将关键字 abstract 添加到方法的返回类型的前面。抽象方法没有实现,所以方法定义后面是分号,而不是常规的方法块。抽象类的派生类必须实现所有抽象方法。当抽象类从基类继承虚方法时,抽象类可以使用抽象方法重写该虚方法。
- 代码示例
public abstract class A |
- 虚方法声明为抽象
// compile with: /target:librarypublic class D |
- 多态接口
- 基类和派生类的转换规则
- 规则一:可以使用基类保存任意的派生类型,并且这是安全的,这叫做隐式转换。
- 规则二:反之,需要使用强制转换操作符进行显示的向下转换。
.NET 面向对象基础的更多相关文章
- 了解JavaScript 面向对象基础 & 原型与对象
面向对象语言中的对象 老是能听到什么基于对象, 面向对象. 什么是对象, 如果有面向对象基础的人可以无视了, 下面举个简单的例子给大家讲讲面向对象中, 对象的定义, 这个是比较通用的, 不过对于JS来 ...
- MYSQL、PHP基础、面向对象基础简单复习总结
一.MYSQL 1.配置MySql 第一步安装服务器(apache). 第二部安装MySql界面程序 2 ...
- 从零开始学Python第六周:面向对象基础(需修改)
标签(空格分隔): 面向对象 一,面向对象基础 (1)面向对象概述 面向过程:根据业务逻辑从上到下写代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类 ...
- python面向对象基础
面向对象基础 1. 简述 编程方式: 面向过程: 根据代码在脚本的堆叠顺序,从上到下依次执行 函数式编程:将相同功能的代码封装到函数中,直接调用即可,减少代码重复性 面向对象:对函数进行分类和封装,将 ...
- java基础学习05(面向对象基础02)
面向对象基础02 实现的目标 1.String类的使用2.掌握this关键字的使用3.掌握static关键字的使用4.了解内部类 String类 实例化String对象一个字符串就是一个String类 ...
- java基础学习05(面向对象基础01--类实例分析)
面向对象基础01(类实例分析) 实现的目标 1.如何分析一个类(类的基本分析思路) 分析的思路 1.根据要求写出类所包含的属性2.所有的属性都必须进行封装(private)3.封装之后的属性通过set ...
- java基础学习05(面向对象基础01)
面向对象基础01 1.理解面向对象的概念 2.掌握类与对象的概念3.掌握类的封装性4.掌握类构造方法的使用 实现的目标 1.类与对象的关系.定义.使用 2.对象的创建格式,可以创建多个对象3.对象的内 ...
- 8.python笔记之面向对象基础
title: 8.Python笔记之面向对象基础 date: 2016-02-21 15:10:35 tags: Python categories: Python --- 面向对象思维导图 (来自1 ...
- 【重走Android之路】【Java面向对象基础(三)】面向对象思想
[重走Android之路][基础篇(三)][Java面向对象基础]面向对象思想 1 面向对象的WWH 1.1 What--什么是面向对象 首先,要理解“对象”.在Thinkin ...
- 【重走Android之路】【Java面向对象基础(二)】细说String、StringBuffer和StringBuilder
[重走Android之路][基础篇(二)][Java面向对象基础]细说String.StringBuffer和StringBuilder 1.String String是Java中的一个final ...
随机推荐
- unity导出工程导入到iOS原生工程中详细步骤
一直想抽空整理一下unity原生工程导入iOS原生工程中的详细步骤.做iOS+vuforia+unity开发这么长时间了.从最初的小小白到现在的小白.中间趟过了好多的坑.也有一些的小小收货.做一个喜欢 ...
- ECMAScript 5(ES5)中bind方法简介备忘
一直以来对和this有关的东西模糊不清,譬如call.apply等等.这次看到一个和bind有关的笔试题,故记此文以备忘. bind和call以及apply一样,都是可以改变上下文的this指向的.不 ...
- C#系列——记一次业务需求:对象的深拷贝
这篇随笔着实在意料之外,主要是源于上周开发BS的一个业务,需要用到对象的深拷贝.说的直白一点,就是将对象内存分配区和引用完全拷贝一份新的.这种需求以前就遇到过,怎么解决的已经记不清了.这次趁着这个机会 ...
- 回答阿里社招面试如何准备,顺便谈谈对于Java程序猿学习当中各个阶段的建议
引言 其实本来真的没打算写这篇文章,主要是LZ得记忆力不是很好,不像一些记忆力强的人,面试完以后,几乎能把自己和面试官的对话都给记下来.LZ自己当初面试完以后,除了记住一些聊过的知识点以外,具体的内容 ...
- php中关于引用(&)详解
php中关于引用(&)详解 php的引用(就是在变量或者函数.对象等前面加上&符号) 在PHP 中引用的意思是:不同的变量名访问同一个变量内容. 与C语言中的指针是有差别的.C语言中的 ...
- dubbo zk 分布式服务项目搭建与配置
1. 项目 jar -----提供接口 2. 项目 jar -----接口实现 provider启动zk main方法启动 start applicationContext.xml <b ...
- HTML5学习总结-番外05 响应式布局
1. 响应式布局 响应式布局是2015年5月份提出的一个概念,简而言之,就是一个网站能够兼容多个终端,而不是为每个终端做一个特定的版本.这个概念是为解决移动互联网浏览而诞生的.其目的是为用户提欧共更加 ...
- <<< Js中实现对字符串的截取
1.函数split() 功能:使用一个指定的分隔符把一个字符串分割存储到数组 例:var Data = "1/234/5678/9"; var str = shuju.split( ...
- 计数器(counter),有序字典(OrderDict),默认字典(defaultdict),可命名元祖(namedtuple),双向队列(deque),单项队列(deuqe.Queue)
Python_Day_05 计数器(counter),有序字典(OrderDict),默认字典(defaultdict),可命名元祖(namedtuple),双向队列(deque),单项队列(deuq ...
- ubuntu14.04 安装pip
参考链接: 1.http://www.liquidweb.com/kb/how-to-install-pip-on-ubuntu-14-04-lts/ 2.http://idroot.net/tuto ...