C#面向对象

C#面向对象

1·类的定义:由具体到抽象的过程

  • 关键字:class
  • 访问修饰符 可以修饰类也可以修饰成员函数和属性
    • public:公共的,任何类可以访问
    • private:私有的,只能在当前类访问
    • internal:默认,内部的,当前项目内访问
  • 构造函数:类实例初始化类成员的过程,默认含有一个空无参构造函数(不显示),自定义构造函数后默认构造函数失效

2·创建对象

  • 关键字:new
  • 调用构造函数:ClassName a =new ClassName()
  • 成员变量:例
    • 字段:public int a;
    • 属性:public int b{get;set;}
    • 属性是对字段的封装
  • 成员方法

3·面向对象三大特性

  • 封装

    • 字段封装成属性,通过get/set方法获取/设置
    • 将方法的多个参数封装到一个类中
    • 将方法、字段、属性封装到一个类中
    • 将具有相同功能的类封装到程序集中
    • ++方法重载++:方法名相同,参数列表(方法体可以相同也可以不同)的方法,调用时通过参数列表识别对应方法
  • 继承

    • A:B:A继承自B,A为子类/派生类,B为父类/基类
    • 所有类都继承自Object类
    • 关键字this:表示当前类的某个实例,可直接访问类成员,例:this.a
    • 关键字base:表示当前类的父类的某个实例,可直接访问父类成员
    • 更好的实现代码重用
    • 单继承:一个类只能继承自一个类
    • 继承后的构造方法调用
      • 原理:
        1. 内存中创建一个父类对象
        2. 外部加上子类成员
        3. 合并成为一个子类对象
      • 过程
        1. 默认先调用父类无参构造方法(被继承时一定要有一个无参构造方法)
        2. 然后根据参数列表选择子类构造方法
      • 子类构造方法:base(参数列表):指定父类中特定构造方法
    • 派生类的访问权限<=基类访问权限
    • 派生类实例继承父类所有成员,可以加以修改/重写
    • 父类private成员也会被继承,父类私有属性可以通过getter/setter访问,父类私有方法无法访问
  • 多态

    • 父类型的变量可以指向子类型的对象

    Animal dog=new Dog();

    • 对象可以完成向上类型转换
    • 运算符is:类型判断,返回bool

    Animal a=new Animal();

    bool b=a is Dog;

    • 运算符as:类型转换,失败返回null

    Animal a=new Animal();

    Dog d=a as Dog;

    • 方法重写

      • 父类中使用virtual修饰方法

      例:public virtual int function(){}

      • 子类中使用override修饰方法

      例:public override int function(){}

      • 无论变量类型,只需要确定变量的对象,指向子类对象时,调用的方法是子类中定义的方法,而非父类中定义的方法(继承的方法也是子类方法)
    • 声明变量的类型决定了变量访问成员的范围

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值