一、继承
- 继承类派生了基类的 public 和 protected 特性和行为,并且能够任意添加和修改子的的特性和行为
- 通过在派生类(子类)名称后加冒号(:),冒号后为基类(父类)名称来实现继承
- 派生类能够调用基类的构造器(构造函数),调用形式是在派生类参数列表后添加一个冒号并通过带有关键字 base 来调用基类构造器
- 语法:
访问级别
??
~~
?? class
??
~~
?? 派生类名:基类名 {
?????
~~~~~
????? 类成员… }
class People
{
public string Name { get; set; }
private int top;
public People(int top)
{
this.top=top;
}
protected int a;
}
class Teacher:People
{
public int Salary { get; set; }
private int left;
public Teacher(int top,int left):base(top)
{
this.left = left;
}
}
static void Main(string[] args)
{
People person1 = new People();
Student stu01 = new Student();
stu01.Name ="";
People person2 = new Student();
person2.Name = "";
Student stu02 = (Student)person2;
Teacher tea01 = person2 as Teacher;
if(tea01 !=null)
tea01.Salary = 100;
}
二、结构
1、什么是结构
- 定义:用于封装小型相关变量的值类型。与类语法相似,都可以包含数据成员和方法成员。但结构属于值类型,类属于引用类型
- 适用性:
表示点、颜色等轻量级对象,如创建存储1000个点的数组,如果使用类,将为每个对象分配更多内存,使用结构可以节约资源
2、定义结构体
1>定义结构体
- 使用struct关键字定义
- 除非字段被声明为 const 或 static ,否则无法初始化
- 结构不能被继承,但可以实现接口
private static int a = 1;
private const int b = 1;
private int rIndex = 0;
2>构造函数
- 结构总会包含无参数构造函数
- 构造函数中必须初始化所有字段
private int rIndex;
public int RIndex
{
get
{
return this.rIndex;
}
set
{
this.rIndex = value;
}
}
public int CIndex { get; set; }
public Direction()
{
}
public Direction (int rIndex,int cIndex):this()
{
this.rIndex = rIndex;
this.CIndex = cIndex;
}
|