C#类

//类头
public class People       //一般来说C#中定义类时,它的首字母是大写
{
//类体
//定义变量
public string name;
public int age;
}

//实例化对象
People peo=new peo();
//变量赋值
peo.age=21;


//////类的构造函数
//在创建一个类的时候,系统会自动给分配一个无参的构造函数

//有参构造函数
public People(string _name,int _age)
{
    //可以用this指针
    name=_name;
    age=_age;
}

//类中定义方法注意前面加上public,其他的和C++类同


//C++中的引用是用"&",而C#中"ref","out"为引用参数声明符,效果同C++的引用
"ref":当实参没有初始化,传给形参时,会报错,其他的效果同C++的引用
"out":当实参没有初始化,传给形参时,不会报错,其他的效果同C++的引用
即使用"ref"的变量必须初始化!


//"params"数组型参数
public void show(params int[] showages)     //当传进来的数组元素个数不确定时,声明params关键字为可变数组
{
}
//main
int[] myages={11,12,13};
peo.show(myages);



//////静态
//类中声明为静态变量:public static string name
访问方法可以直接通过类名调用
//类中声明为静态方法:public static void show(){}
访问方法可以直接通过类名调用
非静态方法可以访问静态变量

//静态类
public static class student
{
}
//!静态类中不允许出现实例化的字段或方法



//////访问私有字段(封装字段)
当类中字段声明为私有时
private string name;
此时类外部无法直接访问该字段
访问方法:
在类中定义属性:
public string Name
{
    get        //表示在访问属性的时候,所对应访问的字段 
    {
        return name;
    }
    set        //隐式参数value,表示即将赋值的数据
    {
        name=value;
    }
}
//main
People peo=new People();
peo.Name;
peo.Name="lin";
//也可以选中行,右键【重构】->【封装字段】



//////类的继承
//继承People
public class doctor:People
{
}
//base关键字
//子类新属性private string addr;进行封装
//如果基类有有参构造函数,则在子类中的构造函数需要这样写:
public doctor(string name,int age,string addr):base(name,age)
{
    this.addr=addr;
}

//new关键字
如果在基类中:
public void show()
{
    Console.WriteLine(this.Name+this.Age);
}
子类中:
public new void show()               //声明为new覆盖基类的方法
{
Console.WriteLine(this.Name+this.Age+this.Addr);
}
也可以先调用基类的方法,再输出子类自己的方法
public new void show()               
{
base.show();
Console.WriteLine(this.Addr);
}

//override关键字是针对父类中已经定义好的虚方法(virtual)可以进行重写(即父类中的方法应该声明为virtual)
public override void show()               
{
Console.WriteLine(this.Addr);
}

 

posted @ 2019-09-02 10:16  LBC不认输  阅读(223)  评论(0编辑  收藏  举报