【Arduino】arduino-C语言高级篇

一、指针

 二、面向对象

arduino也有面向对象的编程,语法如下

2.1 类的声明与实现

class People{
  private: //私有属性和方法
    String _name;
  public: //定义公有属性和方法
    void setName(String); //方法
}; //记得加上分号

void People::setName(String na){ //方法的实现,函数类型、数据类型要与定义类里面一致
  this->_name = na;
}

People xh; //实例化类对象

void setup() {
  
  xh.setName("xiaohong");//对象方法的调用
}

void loop() {
  
}

方法定义在外面,类型函数等等要保持一致

写类的方法也可以这么写

私有属性在外部不能直接被访问,如:xh._name  是不允许的,但是能够被对象内部调用,间接访问私有属性

2.2 继承 

继承的语法

class People {
  private: //私有属性和方法
    String _name;
  public: //定义公有属性和方法
    void setName(String); //方法
    String getName(String);
}; //记得加上分号



class Man:public People{ //定义一个man类,继承People这个父类
  private:
    cahr _sex;
  public:
  String introSelf();
}

如果直接这样定义父类子类,子类是不能访问父类的私有属性、私有方法的,解决方法如下,将private改为protected,子类就能访问私有属性啦

class People {
  protected: //私有属性和方法
    String _name;
  public: //定义公有属性和方法
    void setName(String); //方法
    String getName(String);
}; //记得加上分号



class Man:public People{ //定义一个man类,继承People这个父类
  private:
    cahr _sex;
  public:
  String introSelf();
}

 2.3 面向对象的访问限制修饰符

  1. public    //对象外部内部都能访问的属性和方法
  2. private // 外部不能直接访问的属性和方法
  3. protected  //子类和父类能访问的私有属性和方法,外部不能直接访问

2.4 构造方法

在面向对象编程中,往往需要对象在实例化的时候能够初始化一些值,在声明类的时候直接赋值是可以的,但是会造成一些混乱,为属性进行赋值也是一种实现,我们尽量将声明和实现分开,

面向对象有一个方法适合初始化某些值,那就是构造方法

class Father {
  char _sex = 'M';//如果属性或者方法前面没有限制修饰符,默认就是私有的属性或者方法
  public:
    char getName(){
      return this->_sex;
    }

    Father(char sex){//构造方法,会在实例化时直接调用
      this->_sex = sex;
    }
}

  • 构造方法可以有多个,而且可以同名,但是带的参数必须不一样

如,实例化时,不带参数则调用无参数的构造方法,带参数则调用带参数的构造方法


  • 如果这样定义子类,实例化子类时,是不能直接调用父类的构造方法

可以有以下解决办法,可以通过传递参数间接调用父类的构造方法


2.5 重载

在一个类里面同名的方法是存在多个的。可以传递不同的参数调用对象里不同的方法,这种机制称为重载(overload),同名方法通过不同的的参数实现不同的函数调用


  • 重载与运算符

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值