访问修饰符:(4种)

pubulc:公共的,只要引用了命名空间,就可以随意进行访问
private:私有的,只有当前类内部才可以访问

internal:内部的,当前程序集内可以访问,程序集就是命名空间,此修饰符是默认的
protected:被保护的,当前类和它的子类才可以访问

封装:

基本结构

private int _Ids;   -- 私有的成员变量

public int Ids   -- 属性,封装基本结构
{
 get{ return _Ids; }
 set{ _Ids = value; }
}

①一个成员变量可以有很多个属性

②属性返回类型可以是任意类型,不是必须要与成员变量类型相同

③属性可以是只读的,也可以是只写的,也可以两者都有

创建的类:

public class Class1  //创建类
    {

        private int _id;  //成员变量
        private string _name;
        private DateTime _birthday;
        private decimal _score;

        public int id 
        {
            get { return _id; }
            set
            {
                if (value > 0)
                {
                    _id = value;
                }
                else
                {
                    _id = 0;
                }
            }
        }

主函数中:

Class1 cc = new Class1();  //实例化      
cc.id = 5;
Console.WriteLine(cc.id);

Console.ReadLine();

 

继承: 

子类可以继承父类所有的public方法和属性

父类不可以调用子类的方法和属性,哪怕是public的


子类可以转换成父类,转换成的这个父类也可以转换回相应子类

子类转换成父类,这个父类不可以转换成其它的子类

Plane这个类是Fly的派生类,
Plane这个类派生自Fly

Fly类:

public class Fly
{
  public string Fly1()
  {
    eturn "我可以飞行!";
  }

}

Plane继承于Fly:

public class Plane : Fly
{
  public string Name()
  {
    return "我叫飞机!";
  }
}

程序主函数中:

Plane p= new Plane();  //实例化

Console.writeLine( p.Fly1());  //飞机继承于飞行类

Console.ReadLine();

 

多态:

龙生九子,各有不同

同样都是继承了同一个父类,但是父类中的方法并不使用任何一个子类,那么在这就需要子类重新编写这个方法的主体

1、需要父类同意子类可以重新编写自己的方法
virtual - 虚方法
2、子类只能重写父类允许重写的方法,只能重写虚方法
override - 重写覆盖虚方法

所有的类都可以当做父类,都可以有虚方法

抽象类:abstract
它就是为了被继承而出现的

普通的类中所有的方法都变成虚方法,没有人用最基础的方法,全部都需要重写,那么就不需要那么费劲把普通类中的方法主体都写完,而是,直接定义成抽象类,并且都写成抽象方法。

只声明方法的名称和返回类型,具体方法主体是什么,继承过去以后自己去实现。

抽象方法一定是在抽象类中