abstruct_static_this笔记

1.抽象类不能被实例化,但是具有构造器供子类继承,子类创建实例时,会先使用抽象类的构造器函数
例如:

	public animal() {
			System.out.println("abstract constructor");
		}
	
	public people() {
		System.out.println("people constructor");
	}

2.抽象类可以不具备抽象方法 <---->区别于接口里是abstract Methods
body里一旦有abstract 修饰的方法,就一定要将类声明为abstract 类
而且abstract Methods不能用static修饰(static修饰就应该可以用类名调用,但抽象类没有主体,也就不该用static修饰)
而子类应该覆盖所有的abstract 方法,否则子类还是抽象类

例如:
	abstract class animal{
		private  int tea = 5;
		private String like = "I like Red Tea";
		public animal() {
			System.out.println("abstract constructor");
		}
		public void eat() {
			System.out.println("eat");
		}
		@Override
		public String toString() {
			// TODO Auto-generated method stub
			return getClass().getName()+"   tea num = "+tea+"  "+like;
		}
	}

例如:
	public abstract void sayHello();
	//声明abstract 方法
	@Override
	public void sayHello() {
		System.out.println("Call me back to drink tea");
	}

3.static 代码块:
this代表当前对象,static于类加载的时候存在优先于实例对象的产生,static调用非静态时并未产生对象,因此static不能用this
当类的构造器被调用时,static代码块会加载,作用是初始化类,只加载一次(也就是说不一定new某一个类,static块才被使用)
例如:

	 abstract class animal{
			private static int tea ;
			private static String like;
			static {
				tea = 5;
				like = "i like rea tea";
				System.out.println("func : initial class");
			}
		}

例如:
========not permitted==============
	private int tea ;
	private static String like;
	static {
		this.tea = 5;
		like = "i like rea tea";
		System.out.println("func : initial class");
	}
/* 主要存储初始化配置函数 */ /* 调试的时候可以用到AFIO 所用开发板系统主频72MHZ */ #include "stm32f10x.h" // Device header extern uint32_t number; /*PC5和PC6按钮控制小数部分*/ void GPIO_INIT(void) { RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE); GPIO_InitTypeDef STRUCT; //四个led灯 STRUCT.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_3 | GPIO_Pin_4 ; STRUCT.GPIO_Mode = GPIO_Mode_Out_PP; STRUCT.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOC,&STRUCT); GPIO_InitTypeDef STRUCT_14_15;//上水中断按钮 STRUCT_14_15.GPIO_Pin = GPIO_Pin_14| GPIO_Pin_15; STRUCT_14_15.GPIO_Mode = GPIO_Mode_IPU;//上拉输入 STRUCT_14_15.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOC,&STRUCT_14_15); GPIO_InitTypeDef STRUCT_six_seg;//数码管 STRUCT_six_seg.GPIO_Mode = GPIO_Mode_Out_PP; STRUCT_six_seg.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10| GPIO_Pin_11; STRUCT_six_seg.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA,&STRUCT_six_seg); GPIO_Write(GPIOC,0xFFFF);//全至高电平,保护 } void AFIO_NVIC(void) { RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); //不开启也不影响,规范程序 GPIO_EXTILineConfig(GPIO_PortSourceGPIOC,GPIO_PinSource14); //引脚连接至EXTI GPIO_EXTILineConfig(GPIO_PortSourceGPIOC,GPIO_PinSource15); EXTI_InitTypeDef EXTI_STRUCT; EXTI_STRUCT.EXTI_Line = GPIO_Pin_14| GPIO_Pin_15; EXTI_STRUCT.EXTI_LineCmd = ENABLE; EXTI_STRUCT.EXTI_Mode = EXTI_Mode_Interrupt;//中断模式。指定引脚发生电平变化,触发CPU中断,执行ISR(中断服务函数) EXTI_STRUCT.EXTI_Trigger = EXTI_Trigger_Rising;//触发方式。上升沿触发 EXTI_Init(&EXTI_STRUCT); NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//优先级分组 NVIC_InitTypeDef NVIC_STRUCT; NVIC_STRUCT.NVIC_IRQChannel = EXTI15_10_IRQn;//配置EXTI10~EXTI15的中断通道 NVIC_STRUCT.NVIC_IRQChannelCmd = ENABLE; NVIC_STRUCT.NVIC_IRQChannelPreemptionPriority = 1; NVIC_STRUCT.NVIC_IRQChannelSubPriority = 1; NVIC_Init(&NVIC_STRUCT); } #define TIME 500 //单位时间0.1ms。(TIM设置) void TIM_Init(void)// { RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);//中断通道使能并定义TIM、NVIC结构体 TIM_TimeBaseInitTypeDef TIM_InitStruct; NVIC_InitTypeDef NVIC_InitStruct; TIM_InitStruct.TIM_ClockDivision = TIM_CKD_DIV1; TIM_InitStruct.TIM_CounterMode = TIM_CounterMode_Up;//向上计数 TIM_InitStruct.TIM_Period = 500 - 1; //自动重装载(ARR):终端周期 和 计数范围 TIM_InitStruct.TIM_Prescaler = 7200 - 1 ; //预分频 72M=72000K / 7200(PSC) = 10Kz -> 0.1ms TIM_TimeBaseInit(TIM2,&TIM_InitStruct); TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE); NVIC_InitStruct.NVIC_IRQChannel = TIM2_IRQn; NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE; NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStruct.NVIC_IRQChannelSubPriority = 1; NVIC_Init(&NVIC_InitStruct); TIM_Cmd(TIM2,ENABLE); } typedef struct { uint8_t key_pressed; //按下状态 uint8_t key_processed; //处理状态 uint16_t start_time; //时间检测 }keystate; keystate key14; keystate key15; void EXTI15_10_IRQHandler(void) { uint16_t current_time = TIM_GetCounter(TIM2); if(EXTI_GetITStatus(EXTI_Line14) == SET) { key14.key_pressed = 1; key14.key_processed = 0; key14.start_time = current_time; } if(EXTI_GetITStatus(EXTI_Line15) == SET) { key15.key_pressed = 1; key15.key_processed = 0; key15.start_time = current_time; } EXTI_ClearITPendingBit(EXTI_Line15); //最后处理,防止中断标志提前清除 EXTI_ClearITPendingBit(EXTI_Line14); } void TIM2_IRQHandler(void) { if(TIM_GetITStatus(TIM2, TIM_IT_Update) == SET) { TIM_ClearITPendingBit(TIM2, TIM_IT_Update);//清除中断标志位,释放中断 uint16_t current_time = TIM_GetCounter(TIM2); if(key14.key_pressed && !key14.key_processed) { uint16_t abstruct_time = current_time - key14.start_time; if(abstruct_time >= TIME) { key14.key_processed = 1; if(number > 999900)//预防超出 number = 999999; else number += 100; GPIO_ResetBits(GPIOC,GPIO_Pin_0); GPIO_SetBits(GPIOC,GPIO_Pin_1); } } if(key15.key_pressed && !key15.key_processed) { uint16_t abstruct_time = current_time - key15.start_time; if(abstruct_time > TIME) { key15.key_processed = 1; if(number < 100) number = 0; else number -= 100; GPIO_ResetBits(GPIOC,GPIO_Pin_1); GPIO_SetBits(GPIOC,GPIO_Pin_0); } } if((!key14.key_pressed || key14.key_processed) && //按键未按下|处理完成 (!key15.key_pressed || key15.key_processed) ) { //TIM_Cmd(TIM2,DISABLE); if(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_14) == SET) { key14.key_pressed = 0; } if(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_15) == SET) { key15.key_pressed = 0; } } } } void Init_ALL(void) { GPIO_INIT(); AFIO_NVIC(); TIM_Init(); } 这是我部分修改后的内容,请你根据我设置的变量逻辑来给出修改建议。
09-22
【电动汽车充电站有序充电调度的分散式优化】基于蒙特卡诺和拉格朗日的电动汽车优化调度(分时电价调度)(Matlab代码实现)内容概要:本文介绍了基于蒙特卡洛和拉格朗日方法的电动汽车充电站有序充电调度优化方案,重点在于采用分散式优化策略应对分时电价机制下的充电需求管理。通过构建数学模型,结合不确定性因素如用户充电行为和电网负荷波动,利用蒙特卡洛模拟生成大量场景,并运用拉格朗日松弛法对复杂问题进行分解求解,从而实现全局最优或近似最优的充电调度计划。该方法有效降低了电网峰值负荷压力,提升了充电站运营效率与经济效益,同时兼顾用户充电便利性。 适合人群:具备一定电力系统、优化算法和Matlab编程基础的高校研究生、科研人员及从事智能电网、电动汽车相关领域的工程技术人员。 使用场景及目标:①应用于电动汽车充电站的日常运营管理,优化充电负荷分布;②服务于城市智能交通系统规划,提升电网与交通系统的协同水平;③作为学术研究案例,用于验证分散式优化算法在复杂能源系统中的有效性。 阅读建议:建议读者结合Matlab代码实现部分,深入理解蒙特卡洛模拟与拉格朗日松弛法的具体实施步骤,重点关注场景生成、约束处理与迭代收敛过程,以便在实际项目中灵活应用与改进。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值