抽象类 不能实例化 用来被继承 private 有非抽象成员 字段 方法
抽象方法 没有方法体{} 用来覆写
抽象属性 类似自动实现{set;get;}
调用 基类是抽象类 包含抽象方法 派生类对象赋值给基类的对象(不实例化,只声明),基类对象调用抽象方法,实现多态。
MyAbstractClass[] msc=new MyAbstractClass[100];抽象类不能实例化,抽象类构造函数设断点,f11单步调试,没进构造函数。数组开辟了空间,里面有默认值null
int32,一个字节占8个2进制位,32/8=4 占4个字节
抽象类成员 包含正常类的成员 , 抽象成员的方法 属性 事件(一个私有委托两个方法) 索引器(属性) 。
构造方法 有非抽象成员,一定有构造方法 。
实例化 抽象类构造函数可以赋值,开辟空间,不能创建对象不能实例化 。
基类添加一个私有object字段 封装成只读属性 基类的构造函数接受object类型的参数 把它赋值给字段,在派生类中构造函数调用基类的构造函数传参,派生类中不在声明定义计算所需的字段存储值,在派生类中覆写的抽象成员调用base.字段 计算。
public MyClass(double a,double b) :base(new double[](a,b)){} 用的时候把base.字段 强转换为double[]
易错:派生类忘记继承 抽象方法忘记关键字
隐藏基类方法 基类派生类同一个方法,引用变量是什么类型调用谁的方法,派生类方法加new 效果一样,不出警告
多态 内部实际对象类型调用谁的方法
可扩展性 一个项目包含两个类库 新建文件夹 复制exe 和两个dLL 点dll运行
vs对除数为0 不同操作系统有优化有的不报异常 自己抛异常
throw new Exception(String.Format("除数不为0,错误发生于{0}",DataTime。Now));
double num1; double.TryParse("123",out num1);
continue 跳出本次循环到while循环顶部,继续循环 break 跳出while循环执行循环后面的代码。
计算器工厂模式
基类抽象类,派生类加减乘除,工厂装配类静态