类的定义
类默认访问标识符为 internal,成员的默认访问标识符是private
- 类的构造函数,创建类的新对象时执行
默认构造函数是没有参数的, 参数化构造函数可以创建对象的时候给创建的对象赋值 - 类的析构函数
一个特殊的函数,在内的对象超出范围时使用,不能被继承或者重载 - 类的静态成员
static 关键字把类成员定位为静态的,不管多少个类创建只会有一个静态成员的副本,可以在成员函数的内部或类定义外部进行初始化
可以把类的成员函数声明为static,静态函数在类创建之前已经存在
继承
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace RectanglePack
{
public class Rectangle
{
protected internal double m_length;
protected internal double m_width;
public Rectangle(double L, double w)
{
m_length = L;
m_width = w;
}
double GetArea()
{
return m_length * m_width;
}
public void Display()
{
Console.WriteLine("长度: {0}", m_length);
Console.WriteLine("宽度: {0}", m_width);
Console.WriteLine("面积: {0}", GetArea());
}
}
class RectDisPlay : Rectangle
{
RectDisPlay(double l, double w):base(l, w) //继承的该参数匹配的构造函数必须是可访问权限,基类用关键字 base,不能用类名
{
}
}
};
namespace StudentCShrap
{
class MainClassTest
{
static void Main(string[] args)
{
Console.ReadKey();
}
}
}
多态性
- 静态多态性
- 函数重载
- 相同函数名多个定义
- 运算符重载
- 函数重载
- 动态多态性
- 抽象类的规则
- 不能创建抽象类实例
- 不能在抽象类的外部声明一个抽象方法
- 通过在类定义前放置关键字 sealed,可以将类声明为密封类 当一个类声明为sealed不能被继承,抽象类不能声明sealed
- 抽象类的规则
当一个定义类中的函数需要在继承中实现,可以使用虚方法
- 虚方法使用virtual 声明
- 虚方法的调用是在运行时发生的
- 动态多态是通过 抽象类 和 虚方法实现的
函数重载
重载运算符需要加上operator 关键字 然后加上运算符 public static Box operator+ (Box b, Box c)
可重载和不可重载的运算符
运算符 | 描述 |
---|---|
+, -, !, ~, ++, -- | 这些一元运算符只有一个操作数,且可以被重载。 |
+, -, *, /, % | 这些二元运算符带有两个操作数,且可以被重载。 |
==, !=, <, >, <=, >= | 这些比较运算符可以被重载。 |
&&, || | 这些条件逻辑运算符不能被直接重载。 |
+=, -=, *=, /=, %= | 这些赋值运算符不能被重载。 |
=, ., ?:, ->, new, is, sizeof, typeof | 这些运算符不能被重载。 |
接口类
接口定义了所有类继承接口时应遵循的语法合同。接口定义了语法合同 "是什么" 部分,派生类定义了语法合同 "怎么做"部分。
接口定义了属性、方法和事件,这些都是接口的成员。接口只包含了成员的声明。成员的定义是派生类的责任。接口提供了派生类应遵循的标准结构。
接口使得实现接口的类或结构在形式上保持一致。
抽象类在某种程度上与接口类似,但是,它们大多只是用在当只有少数方法由基类声明由派生类实现时。
接口的声明默认为 Public
方法可以不实现
接口继承
如果一个接口继承其他接口,那么实现类或结构就需要实现所有的接口成员
命名空间
命名空间的设计目的是提供一种让一组名称与其他名称分隔开的方式
命名空间可以被嵌套,即您可以在一个命名空间内定义另一个命名空间
using的用法
- using指令:引入命名空间
- using System; using Namespace1.SubNameSpace;
- using static 指令:指定无需指定类型名称即可访问其静态成员的类型
- using static System.Math;var = PI; // 直接使用System.Math.PI
- 起别名
- using Project = PC.MyCompany.Project;
- using语句:将实例与代码绑定
- using (Font font3 = new Font("Arial", 10.0f), font4 = new Font("Arial", 10.0f))
{
// Use font3 and font4.
}
- using (Font font3 = new Font("Arial", 10.0f), font4 = new Font("Arial", 10.0f))
预处理命令
- #define 用来定义一系列成为符号的字符
- #undef 取消定义符号
- #if 用于测试符号是否为真
- #else
- #elif 用于创建复合条件指令
- #line 修改编译器的行数以及输出错误的警告和文件名
- #error 代码指定位置生成一个错误
- #waring 允许从代码指定的位置生成警告
- #region
- #regionend