2021-05-07构造器

本文详细介绍了Java类中的构造器概念,包括其名称规则、无返回值特性,以及new关键字如何调用构造器进行对象初始化。重点讲解了有参和无参构造器的关系以及注意事项。

构造器讲解

类中的构造器也称为构造方法,是进行创建对象的时候必须要调用的,并且构造器有两个特点:

  1. 必须和类的名字相同
  2. 必须没有返回类型,也不能写void

一个类即使什么都不写,他也会存在一个构造方法

package oop.demo2;

//java编译之后会生成class文件
public class Person {
    //一个类即使什么都不写也会存在一个方法
    String name;
    //构造器会实例化初始值
    //使用new关键字,本质是在调用构造器
    //
    public Person(){
        this.name = "qj";
    }

    //有参构造 一旦定义有参构造,无参构造就必须显示定义,否则new0实例化对象会报错
    public Person(String name){
        this.name = name;
    }
}

package oop.demo2;

//一个项目应该只存在一个main方法
public class Application {
    public static void main(String[]args){
        //类:抽象的,实例化
        //类实例化后会返回自己的对象
        //student对象就是一个Student类的具体实例
        Student xiaoming = new Student();
        Student xiaohong = new Student();

        xiaoming.name = "小明";
        xiaohong.age = 18;

        System.out.println(xiaoming.name);
        System.out.println(xiaohong.age);

        //new 实例化了一个对象
        Person person = new Person();
        System.out.println(person.name);

        Person person1 = new Person("kuang");
        System.out.println(person1.name);
    }
}







构造器:

  1. 和类名相同
  2. 没有返回值

作用:

  1. new本质是在调用构造方法
  2. 初始化对象的值

注意点:

  1. 定义有参构造之后,如果想使用无参构造,要显示定义的一个无参构造
  2. Alt+Insert

在这里插入图片描述

在这里插入图片描述

角色:你是一位熟悉 Renesas RA 系列的嵌入式专家 语言:C11 环境: ● MCU:R7FA4M3AD3CFB ● IDE:e² Studio 2021-07 ● FSP:3.2.0自动生成 HAL/LL 驱动) ● 主频:100 MHz ● 编译器:GCC for Renesas (arm-none-eabi-gcc) 硬件连接:三片TLC5927级联控制 请评估一下下面TLC驱动代码有什么风险 /** @file TLC5927.c @brief RA 系列 MCU 驱动 TI TLC5927 16 通道恒流 LED 驱动器 @author XXX @date 2025-08-26 功能: GPIO 初始化 48 bit 灰度数据发送 全局亮度调节(0~10 级) 故障回读(开路/短路检测) 工作模式切换(Normal / Config / Error Detect / Switch) */ #include "TLC5927.h" #include "hal_data.h" #include <stdint.h> #include <string.h> #include <stdbool.h> /======================= 1. 底层引脚宏 =========================/ #define TLC5927_SIN_HIGH() g_ioport.p_api->pinWrite(g_ioport.p_ctrl, BSP_IO_PORT_04_PIN_02, BSP_IO_LEVEL_HIGH) #define TLC5927_SIN_LOW() g_ioport.p_api->pinWrite(g_ioport.p_ctrl, BSP_IO_PORT_04_PIN_02, BSP_IO_LEVEL_LOW) #define TLC5927_SCLK_HIGH() g_ioport.p_api->pinWrite(g_ioport.p_ctrl, BSP_IO_PORT_04_PIN_03, BSP_IO_LEVEL_HIGH) #define TLC5927_SCLK_LOW() g_ioport.p_api->pinWrite(g_ioport.p_ctrl, BSP_IO_PORT_04_PIN_03, BSP_IO_LEVEL_LOW) #define TLC5927_OE_HIGH() g_ioport.p_api->pinWrite(g_ioport.p_ctrl, BSP_IO_PORT_04_PIN_05, BSP_IO_LEVEL_HIGH) #define TLC5927_OE_LOW() g_ioport.p_api->pinWrite(g_ioport.p_ctrl, BSP_IO_PORT_04_PIN_05, BSP_IO_LEVEL_LOW) #define TLC5927_LE_HIGH() g_ioport.p_api->pinWrite(g_ioport.p_ctrl, BSP_IO_PORT_04_PIN_15, BSP_IO_LEVEL_HIGH) #define TLC5927_LE_LOW() g_ioport.p_api->pinWrite(g_ioport.p_ctrl, BSP_IO_PORT_04_PIN_15, BSP_IO_LEVEL_LOW) #define TLC5927_SOUT_READ(lv) g_ioport.p_api->pinRead(g_ioport.p_ctrl, BSP_IO_PORT_04_PIN_06, (lv)) /*======================= 3. 模式表(最终锁定版) ==================*/ /* 所有波形由 TI 官方定义,禁止修改! */ /* Normal 模式:5 行,以 {-1,-1,-1} 结束 */ const int NORMAL_MODE_PATTERN[5][3] = { {0, 1, 0}, {1, 1, 0}, {0, 1, 0}, {1, 1, 0}, {-1,-1,-1} }; /* Switch 模式:7 行,以 {-1,-1,-1} 结束 */ const int SWITCH_MODE_PATTERN[7][3] = { {0, 1, 0}, {1, 1, 0}, {0, 0, 0}, {1, 0, 0}, {0, 1, 0}, {1, 1, 0}, {-1,-1,-1} }; /* Error Detect 模式:9 行,以 {-1,-1,-1} 结束 */ const int ERROR_DETECT_MODE_PATTERN[9][3] = { {0, 1, 1}, {1, 1, 1}, {0, 1, 0}, {1, 1, 0}, {0, 0, 0}, {1, 0, 0}, {0, 0, 0}, {1, 0, 0}, {-1,-1,-1} }; /* Error Detect Ready:3 行,以 {-1,-1,-1} 结束 */ const int ERROR_DETECT_READY[4][3] = { {0, 0, 0}, {1, 0, 0}, {0, 1, 0}, {-1,-1,-1} }; /* Configuration 模式:5 行,以 {-1,-1,-1} 结束 */ const int CONFIGURATION_MODE_PATTERN[5][3] = { {0, 1, 1}, {1, 1, 1}, {0, 1, 0}, {1, 1, 0}, {-1,-1,-1} }; /======================= 4. 亮度查找表 ==========================/ const uint8_t tlc5927_brightness_lut[11] = { 0x00, /* 0 0 % / 0x40, / 1 ~20 % / 0x80, / 2 ~33 % / 0xC0, / 3 ~47 % / 0xD4, / 4 ~65 % / 0x83, / 5 ~75 % / 0x4B, / 6 ~80 % / 0xEB, / 7 ~85 % / 0xB7, / 8 ~95 % / 0x4F, / 9 ~90 % */ 0xFF /*10 ~100% */ }; /======================= 5. 静态函数声明 =========================/ static inline void send_bit(uint8_t bit); static inline void digitalWrite(uint8_t pin, uint8_t val); static void tlc5927_do_clk_ioe_le(const int state_list[][3]); /================================================================/ void TLC5927_Init(void) { /* 数据输入(回读) */ g_ioport.p_api->pinCfg(g_ioport.p_ctrl, BSP_IO_PORT_04_PIN_06, IOPORT_CFG_PORT_DIRECTION_INPUT); } /================================================================/ static inline void send_bit(uint8_t bit) { if (bit) TLC5927_SIN_HIGH(); else TLC5927_SIN_LOW(); } void tlc5927_send_multiple_data(const uint16_t *data, size_t count) { for (size_t i = 0; i < count; ++i) { uint16_t val = data[i]; for (int8_t bit = 15; bit >= 0; --bit) send_bit((val >> bit) & 1U); } } /================================================================/ static inline void digitalWrite(uint8_t pin, uint8_t val) { /* pin 映射:1=SIN 2=CLK 3=OE 4=LE(仅兼容旧代码) */ switch (pin) { case 1: val ? TLC5927_SIN_HIGH() : TLC5927_SIN_LOW(); break; case 2: val ? TLC5927_SCLK_HIGH() : TLC5927_SCLK_LOW(); break; case 3: val ? TLC5927_OE_HIGH() : TLC5927_OE_LOW(); break; case 4: val ? TLC5927_LE_HIGH() : TLC5927_LE_LOW(); break; default: break; } } static void tlc5927_do_clk_ioe_le(const int state_list[][3]) { for (int i = 0; state_list[i][0] != -1; ++i) { digitalWrite(2, state_list[i][0]); /* CLK / digitalWrite(3, state_list[i][1]); / OE / digitalWrite(4, state_list[i][2]); / LE */ } } /================================================================/ void tlc5927_switch_mode(const int pattern[][3]) { tlc5927_do_clk_ioe_le(SWITCH_MODE_PATTERN); tlc5927_do_clk_ioe_le(pattern); } void tlc5927_normal_mode(void) { tlc5927_switch_mode(NORMAL_MODE_PATTERN); TLC5927_OE_LOW(); /* 打开输出 */ } void TLC5927_Write(uint16_t RM, uint16_t RH, uint16_t RL) { uint16_t data[3] = { RM, RH, RL }; tlc5927_send_multiple_data(data, 3); TLC5927_LE_HIGH(); TLC5927_LE_LOW(); } /================================================================/ void tlc5927Config(uint8_t voltage_gain) { if (voltage_gain > 127) voltage_gain = 127; } /================================================================/ uint16_t TLC5927_ReadError(uint16_t *Data3, uint16_t *Data2, uint16_t *Data1) { if (!Data3 || !Data2 || !Data1) return 1; } /================================================================/ uint16_t TLC5927_ReadSingle(void) { uint16_t ret = 0; bsp_io_level_t lv; } /================================================================/ void TLC5927_SetBrightness(uint8_t level) { if (level > 10) level = 10; tlc5927Config(tlc5927_brightness_lut[level]); }
08-28
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值