1. 类和对象

1.1 类和对象的概念
  类:对象的类型,它不同于 int 等基本数据类型,因为类具有行为;也可以说是具有相
  同特征和行为的一组对象的集合。
  对象:对象是一个个你能看得见,摸得着的实体,是实实在在的事物,具有相同特征和
  行为的对象可以抽象成类。
1.2 定义类的语法
  [modifier] class ClassName
  {
    //[field,Method]
  }
1.3 如何创建对象
ClassName name=new ClassName();
1.4 命名空间:
作用:用于管理类;
声明 namespace;
导入 using。

2. 封装

2.1 封装的概念
  封装指的是将东西包装在一起,然后以新的完整的形式呈现。对于面向对象而言,封装
  就是将方法和字段包装到一个程序单元中,并且这些单元以类的形式实现。那么我们说
  的再直白一些,封装就是将字段私有化,提供公有的方法来访问私有的字段,那么这样
  的一个类就是实现了封装特性的类。
  封装是面向对象编程的重要概念之一。通过封装可以隐藏类的实现细节,同时,可以通
  过访问相对公开的属性和方法与外界进行信息的交流。
2.2 属性语法
访问修饰符 类型 属性名称
{
属性访问器(包含 set 和 get)

}
set 访问器负责设置字段的值
get 访问器负责获取字段的值

2.3 构造函数
与类名相同;
没有返回类型,无需标识 void;
可以无参数也可以有参数;
作用:主要完成对象的初始化工作。
2.4 方法重载
1、重载方法同名且在同一个类中。
2、重载方法的参数的类型或个数不同。

3. 继承:
3.1 继承的概念
面向对象三大特性之一,继承是两个类之间的关系:子类继承了父类,就天然拥有了
父类所具有的特性(构造函数、静态成员、私有成员除外)。
3.2 继承的价值
继承,既实现了代码的重用,又模拟了现实世界的关系,在面向对象编程中,强调一
切皆对象,继承正好模拟了对象间的关系。而且,继承使得父类与子类的层次结构清
晰,子类只需用关注自己的状态和行为,父类的状态和行为则交给父类去处理。
3.3 继承的语法
在声明子类的时候,在类名右边加上冒号,冒号右边写上父类的类名。
3.4 继承的特性
1、单根性 2、传递性。
3.5 继承与构造函数
子类的构造函数被调用时,会首先调用父类的构造函数。
3.6 base 用法
1、使用 base()调用父类构造函数。
2、使用 base 调用父类成员。

3.7 里氏替换原则
简单的解释,就是子类对象可以替换父类对象。
关键字is和as:使用is判断对象类型,用as进行类型转换。

4. 多态
4.1 多态概念
多态是类的三大特性之一。封装、继承、多态这三大特性是相互关联的。多态性存在
于继承性之中,它是继承性的进一步扩展。没有继承就没有多态。通过多态可以实现
代码重用,减少代码量,提高代码的可扩展性和可维护性。在继承的基础上实现方法
重写是实现多态性的关键。
4.2 多态的使用
同一个引用类型,使用不同的实例而执行不同操作。
1、使用父类作为方法形参。
2、使用父类作为方法返回值类型。
4.3 虚方法:使用 virtual 修饰符修饰的方法 。
4.4 重写方法:使用 override 修饰符修饰的方法 。
4.5 方法重写的要求
1、相同的方法名。
2、相同的参数列表。
3、返回值类型必须相同或者是子类。
4 、不能缩小被重写方法的访问权限。
4.6 隐藏方法和重写方法的区别:
(1)关键字分别为 new 和 override。
(2)隐藏保留了基类方法,重写覆盖了基类方法。
(3)基于重写可以实现多态,而隐藏方法不行。
4.7 向上转型语法:
<父类型> <引用变量名> = new <子类型>();
向下转型语法:
<子类型> <引用变量名> = (<子类型> )<父类型的引用变量>;

5. 抽象类和接口
5.1 抽象类和抽象方法的定义
public abstract class 类名
{
public abstract void 方法名([参数列表]);
}
5.2 抽象方法和虚方法的区别
(1)关键字分别为 abstract 和 virtual。
(2)抽象方法必须在抽象类中,虚方法可在普通类中,也可以在抽象类中。
(3)抽象方法只有方法声明,不能有实现;虚方法有实现。
(4)继承抽象类的非抽象类必须重写抽象方法;而虚方法可以不重写。
5.3 定义接口的语法
public interface 接口名称
{
//接口成员(方法、属性等)
}
关于接口的语法,需要大家注意以下几点:
1)接口的名称通常以“I”开头,后面的部分和类的命名规则一样,即 Pascal 命名
法则。
2)接口中的方法不指定具体实现,即也是抽象的,比如这里的 ShowName()方法,
但与抽象类中的抽象方法不同,它不能用 abstract 关键字修饰。
3)接口成员隐式 public,不能显示指定访问级别,比如 ShowName()方法是公有的,
但不能显示指定为 public。
5.4 抽象类接口的好处
1.抽象类便于复用。
2.接口便于代码维护。
5.5 面向对象设计原则
1.多用组合,少用继承。
2.针对接口编程。
3.针对扩展开放,针对改变关闭。

6. 静态和密封
6.1 静态成员
类的静态成员包括静态的方法、字段和属性。
静态成员用“static”关键字声明。
用“类名.成员名”的方式调用。
6.2 静态方法
静态方法只能够访问本类中的静态成员,不能够直接访问本类中的实例成员。
6.3 实例方法
实例方法既可以访问实例成员,又可以访问静态成员。
6.4 静态字段的用法
1.记录已实例化的对象的个数。
2.存储必须在所有实例之间共享的值。
6.5 静态类
1.只包含静态成员。
2.不能实例化对象。
3.不能派生子类。
6.6 密封类
sealed class 不能派生子类,但可以实例化对象。
6.7 密封方法
用 sealed 关键字修饰重写的方法,该方法将不能被子类重写。

7. 值类型和引用类型
7.1 值类型和引用类型
值类型一般保存在栈中,引用类型一般保存在堆中。
值类型直接存储值,引用类型直接存储对象的地址或引用。
7.2 定义结构的语法
访问修饰符 struct 结构名
{

结构成员
}
7.3 定义枚举的语法
访问修饰符 enum 枚举名
{
成员 1,成员 2,……成员 n
}
7.4 ref 和 out 的区别
ref 对应的变量必须有初始值,out 可以没有。

7.5 常量
不可修改,必须有初始值,必须定义在类中,关键字 const。
7.5 装箱和拆箱
装箱:将值类型转成引用类型。
拆箱:将引用类型转成值类型。

7.6 Object 和 ValueType
直接继承 Object 是引用类型,继承 ValueType 是值类型

c# 基础复习1的更多相关文章

  1. 《CSS权威指南》基础复习+查漏补缺

    前几天被朋友问到几个CSS问题,讲道理么,接触CSS是从大一开始的,也算有3年半了,总是觉得自己对css算是熟悉的了.然而还是被几个问题弄的"一脸懵逼"... 然后又是刚入职新公司 ...

  2. Java基础复习笔记系列 九 网络编程

    Java基础复习笔记系列之 网络编程 学习资料参考: 1.http://www.icoolxue.com/ 2. 1.网络编程的基础概念. TCP/IP协议:Socket编程:IP地址. 中国和美国之 ...

  3. Java基础复习笔记系列 八 多线程编程

    Java基础复习笔记系列之 多线程编程 参考地址: http://blog.csdn.net/xuweilinjijis/article/details/8878649 今天的故事,让我们从上面这个图 ...

  4. Java基础复习笔记系列 七 IO操作

    Java基础复习笔记系列之 IO操作 我们说的出入,都是站在程序的角度来说的.FileInputStream是读入数据.?????? 1.流是什么东西? 这章的理解的关键是:形象思维.一个管道插入了一 ...

  5. Java基础复习笔记系列 五 常用类

    Java基础复习笔记系列之 常用类 1.String类介绍. 首先看类所属的包:java.lang.String类. 再看它的构造方法: 2. String s1 = “hello”: String ...

  6. Java基础复习笔记系列 四 数组

    Java基础复习笔记系列之 数组 1.数组初步介绍? Java中的数组是引用类型,不可以直接分配在栈上.不同于C(在Java中,除了基础数据类型外,所有的类型都是引用类型.) Java中的数组在申明时 ...

  7. C语言基础复习总结

    C语言基础复习总结 大一学的C++,不过后来一直没用,大多还给老师了,最近看传智李明杰老师的ios课程的C语言入门部分,用了一周,每晚上看大概两小时左右,效果真是顶一学期的课,也许是因为有开发经验吧, ...

  8. JS基础 复习: Javascript的书写位置

    爱创课堂JS基础 复习: Javascript的书写位置复习 js书写位置:body标签的最底部.实际工作中使用书写在head标签内一对script标签里.alert()弹出框.console.log ...

  9. MySQL学习笔记_8_SQL语言基础复习

    SQL语言基础复习 一.概述 SQL语句注释方式 1)以"#"开头直到行尾的所有内容都是注释 2)以"--"(--后还有一个空格)开头直到行尾的所有内容都是注释 ...

  10. Java基础复习笔记基本排序算法

    Java基础复习笔记基本排序算法 1. 排序 排序是一个历来都是很多算法家热衷的领域,到现在还有很多数学家兼计算机专家还在研究.而排序是计算机程序开发中常用的一种操作.为何需要排序呢.我们在所有的系统 ...

随机推荐

  1. MyEclipse 点击 部署 按钮 无效的解决办法

    问题描述 1 通常情况下,当我们点击MyEclipse任务栏上的部署按钮时,会弹出项目部署框,如下图:   2 但我们有时也会遇到点击部署按钮怎么也弹不出项目部署框的问题. END 解决方法一: 1 ...

  2. JavaScript常用

    打印日志 console.log 类型判断 第一种方式var type = Object.prototype.toString.call(list);console.log(type);第二种方式ty ...

  3. 解决TextView与RadioGroup不对齐的问题

    TextView和RadioGroup是在同一个LinearLayout中的,控件摆放方式是android:orientation="horizontal",虽然三个控件是水平摆放 ...

  4. DOCKER脚本一例---快速建立大批测试机

    这个会由一系列的脚本构成,比如: 系统重启后,如何快速恢复服务,如何建立网桥(也可一次写入),如何在新系统上快速部署. ADDBRIDGE #!/bin/sh br_name=br100 brctl ...

  5. 我想要个pc和手机共有的客户端,就像百度云(iBarn网盘好用)

    https://github.com/zhimengzhe/iBarn iBarn网盘是一个基于PHP开发的先进的云存储系统,提供文件的网络备份,同步和分享服务:支持断点续传,秒传等功能:可选择文件下 ...

  6. poj 2287 动态规划

    用贪心简单证明之后就是一个从两头取的动态规划 #include <iostream> #include <cstring> #include <cstdio> #i ...

  7. 【HDOJ】1494 跑跑卡丁车

    DP,将能量映射为0~14,注意当选择这圈加速的时候,这圈就不能再储存能量,同时能量14可能转化为10. #include <cstdio> #include <cstring> ...

  8. UML建模之活动图介绍(Activity Diagram)

      一.活动图的组成元素 Activity Diagram Element 1.活动状态图(Activity) 2.动作状态(Actions) 3.动作状态约束(Action Constraints) ...

  9. HDOJ 1202 The calculation of GPA

    Problem Description 每学期的期末,大家都会忙于计算自己的平均成绩,这个成绩对于评奖学金是直接有关的.国外大学都是计算GPA(grade point average) 又称GPR(g ...

  10. Shell脚本常用命令简介

    格式化日期yyyy-mm-dd hh:mm:ss显示 date "+%Y-%m-%d %H:%M:%S" 将内容写入到新文件 echo "hello">a ...