## Ship的实例化
所有的类在使用前都是需要实例化的,Ship作为一个类也不例外。
```
void Main(){
Ship MyShip = new Ship();
}
```
通过new关键字加类名加()来实例化一个类。
实例化是在为这个类准备必要的数据,同时将这个类作为一个独立的个体生成出来。
Ship类当然是需要一堆方块,所以它需要传入一堆方块。
>[danger] Ship类提供了两个实例化方法(构造方法重载)
```
void Main(){
Ship MyShip_1 = new Ship(); //不传入参数,得到一个空的Ship类,不能使用。
List<IMyTerminalBlock> Blocks = new List<IMyTerminalBlock> Blocks();
//将所需的方块放进Blocks里,其中必须包含一个IMyShipController作为主控方块。
Ship MyShip_2 = new Ship(Blocks); //传入所有方块,得到一个实例化的Ship类。
}
```
>[success] 如何判断Ship类初始化成功:
> Ship类采用了一个string Debug成员变量来判断它是否初始化成功,默认值是"Normal"。
> 由于在class中无法直接调用Echo()等方法进行调试,所以采用一个变量来将其状态传出,再在Main中进行判断和调试是最有效的方法。
> 你可以在实例化Ship后立刻访问它的Debug变量,判断它是否是默认值,从而判断这个Ship是否实例化成功。
> Ship类默认的限制了必须至少传入一个IMyShipController方块作为主控,如果没有,它会直接中断实例化并将Debug设为"Cockpit Not Found"
> 你也可以在构造方法public Ship(List<IMyTerminalBlock> Blocks)中自定义你的所需的判断条件
在实例化好了Ship类以后,必须执行如下几个方法:
```
Ship MyShip;
void Main(){
...
//假设你在前面已经实例化好了一个Ship类,名字是MyShip,接下来你必须执行这两步
Ship.timetick ++; //让时钟变量自增,因为timetick是静态属性,所以用Ship.timetick访问而不是MyShip.timetick
MyShip.UpdatePhysical(); //更新飞船的物理信息,其他的很多方法都依赖于飞船的物理信息
}
```
>[danger]这里有必要说明一下什么是类的静态属性
>当类中有一个变量 public string Name,这是不加修饰的公共变量,它默认是非静态的。
>当你看到 public static string Address,它是加了static关键字修饰的,这就是一个静态属性。
>你可以这样理解:
>非静态属性是当这个类实例化出来以后才产生的,它是这个实例化出来的对象的属性,当你使用Ship类实例化出多个对象时,这几个对象的非静态属性是互相独立的。所以使用 实例化出来的变量名.属性名 去访问它
>静态属性是这个类的属性,它和实例化出来的对象无关,相当于这个类本身就是一个对象,这个静态属性属于这个类,所以使用 类名.属性名 去访问它
- 序言
- 写在前面的话
- 太空工程师
- MEA小组
- 一、入门
- 1.1 基础概念
- 1.2 编程工具
- 1.3 变量
- 1.4 函数 Function
- 1.5 基本语法
- 1.5.1 运算符
- 1.5.2 if
- 1.5.3 for
- 1.5.4 其他语法
- 1.3 类 Class
- 二、编程块
- 2.1 方块的概念
- 2.2 List<T>结构
- 2.3 获取方块
- 2.4 方块的使用
- 三、Ship 类
- 3.1 简介
- Ship v0.5
- 代码
- 手册(待更新)
- 例子(待更新)
- Ship v1.0
- 代码
- 例子
- 文档
- 实例化
- 内置变量
- 内置方法
- Target类
- 四、运动控制算法在SE中的应用
- 4.1 运动控制介绍
- 4.2 过程控制
- 4.3 震荡和动态误差
- 4.4 误差累加方案
- 4.5 PID算法
- 4.6 对PID算法的一点点简化
- 4.7 一阶惯性系统的PID算法优化的研究
- 五、MEA方块类
- 5.0 核心代码目录
- v1.0核心代码
- v1.1 核心代码
- v2.0 核心代码
- 5.1 类的概念
- 5.2 MEA的方块类(Block)
- 5.3 方块类文档
- 5.4 方块类2.0 全教程
- 5.4.1 安装和使用
- 5.4.2 方块类(Block)
- 5.4.3 显示屏类(DisplayScreen)
- 5.4.4 LCD类(LCD)
- 5.4.5 主控座椅类(Cockpit)
- 六、疯猴的编程笔记
- 第一个程序
- 获取和控制其他块
- 物流与生产
- 界面与通信
- 运动与姿态
- 侦测与导航
- 七、SteamZhou的笔记
- 有趣而花里胡哨的IDEA
- 八、质子对撞炮的笔记
- 属性 Property
- 接口 interface