结构和类
(一)结构-通常用于较小的数据类型,大多数情况下都是用类,可用于特定数学公式返回值这类
Public struct 结构名{}
- 结构是值的类型
- 传递结构一般传值方式进行,不是用using进行,class则是用Using来进行引用
- 结构声明构造函数时候必须带参数
- 一个结构不能被另一个结构继承,因为都是具体的值,值不能继承值
- 结构可以实现接口
- 结构里面不能实例化其他东西
- 实例化结构不需要用new来修饰,如public struct st{string a=””;}引用的时候str ss;ss.a=123就可以
(二)类class
1.OOP object oriented programming面向对象编程三大特点:
(1)封装——集合属性和方法,使用的时候引用其某个属性和方法就可以,不显示出类具体结构
(2)继承——派生类:基类,继承基类的公开属性、字段、方法
(3)多态——基类含有多个派生类,通过向基类提供基类的参数,由基类分配引用派生类内方法叫做多态;
2.类的声明:修饰词 class 类名{公有变量;方法;…}
3.构造函数和.析构函数:一般对象的生命周期都是构造函数开始和析构函数结束;构造函数是特殊的函数,public 函数名{};然后在main()中调用,实例化,实例.参数和方法,就可以;析构函数实际上等于“~构造函数名”,main中调用构造函数,或者实例化构造函数,最后都会自动被调用.
4.类实例化:对象是数据行为和标识的集合,不同于类,类的实例化创建一个该对象所属类的实例
必须对类进行实例化才能引用类中的方法和变量或者字段
(三)类的面向对象特性
1.封装:class myclass{private int x;private int y; public int X{get{return x;}set{x=value;}}}….
2.继承:p[ublic class1:class0{} 派生类:基类,“:”表示继承,基类中private定义的字段属性和方法可以被派生类继承,直接用不需要“class0.参数方法等”
3.类的多态:通过基类的变量引用基类,基类自动分配到派生类,从而实际引用了派生类的具体方法,搞个例子看看:
using System;using System.Collections.Generic;using System.Linq;using System.Text;
namespace 对象和类
{
#region 这里是类的多态实验
class class0
{
private int x = 0;
private int y = 0;
public int X
{ get { return x; } set { x = value; } }
public int Y
{ get { return y; } set { y = value; } }
public virtual int add()
{ return X + Y; }
}
class class1 : class0
{
public override int add()
{
//return base.add();
int x = 15;
int y = 7;
return x + y;
}
//public new int add() { int x = 5; int y = 5; return x * y; }//除了重写来实现虚方法,还能新增来实现
}
#endregion 这里是多态的实验,包含下面mian
class Program
{
static void Main(string[] args)
{
class1 cl1 = new class1();
class0 cl0 = (class0)cl1;
//cl1.X = 4;//无关
//cl1.Y = 5;
Console.WriteLine(cl0.add());
Console.WriteLine(cl1.add());
}
}