继承允许我们创建一个新的类(子类),它继承另一个类(父类)的属性和方法。这使得代码重用和扩展变得更加容易。
在Java中,子类可以继承父类的构造方法。当子类创建对象时,会自动调用父类的构造方法来初始化从父类继承的成员变量和方法。子类可以通过super关键字来调用父类的构造方法。
以下是一个示例代码:
public class Animal {
private String name;
public Animal(String name) {
this.name = name;
}
public void speak() {
System.out.println("Animal speaking");
}
}
public class Dog extends Animal {
private int age;
public Dog(String name, int age) {
super(name); // 调用父类的构造方法
this.age = age;
}
public void speak() {
System.out.println("Dog speaking");
}
}
public class Main {
public static void main(String[] args) {
Dog dog = new Dog("Tommy", 3);
dog.speak(); // 输出:Dog speaking
}
}
在上面的例子中,Animal类有一个带有一个参数的构造方法,它接受一个name(名字)参数并将其赋值给name成员变量。Dog类继承Animal类,并新增了一个age(年龄)成员变量。Dog类的构造方法使用super关键字调用父类的构造方法来初始化name成员变量。最后,在Main类中创建Dog对象,输出结果为"Dog speaking"。
Python要让子类继承父类的所有方法和属性,包括含参数的__init__
方法,可以使用super()
函数来实现。
下面是一个示例代码:
class Parent:
def __init__(self, arg1, arg2):
self.arg1 = arg1
self.arg2 = arg2
def method1(self):
print("Parent method1")
def method2(self):
print("Parent method2")
class Child(Parent):
def __init__(self, arg1, arg2, arg3):
super().__init__(arg1, arg2) # 调用父类的__init__方法
self.arg3 = arg3
def method3(self):
print("Child method3")
# 创建子类对象
child = Child("arg1 value", "arg2 value", "arg3 value")
# 调用继承的父类方法
child.method1() # 输出:Parent method1
child.method2() # 输出:Parent method2
child.method3() # 输出:Child method3
在子类的__init__
方法中使用super().__init__()
调用父类的__init__
方法,可以将父类的初始化代码复用。
在C++例子中,Cat
类继承自Animal
类,因此Cat
对象可以调用eat
方法(从Animal
继承而来),同时也可以调用Speak
方法(Cat
类特有的)。
class Animal {
public:
void eat() {
cout <;<; "The animal eats." <;<; endl;
}
};
class Cat : public Animal { // Dog继承自Animal
public:
void Speak() {
cout <;<; "喵!" <;<; endl;
}
};
int main() {
Cat myCat;
myCat.eat(); // 继承自Animal的方法
myCat.Speak(); // Cat特有的方法
return 0;
}
C++中类继承的两种主要方式,它们之间存在几个关键的区别:
通信工程专业毕业,7年开发经验
精通c/c++
精通golang
熟悉常见的脚本,js,lua,python,php
熟悉电路基础,嵌入式,单片机
服务端开发
嵌入式开发
>gin接口代码CURD生成工具
sql ddl to struct and markdown,将sql表自动化生成代码内对应的结构体和markdown表格格式,节省宝贵的时间。
qt .ui文件转css文件
duilib xml 自动生成绑定控件代码
协议调试器
基于lua虚拟机的的协议调试器软件 支持的协议有:
串口
tcp客户端/服务端
udp 组播/udp节点
tcp websocket 客户端/服务端
软件界面
使用例子: 通过脚本来获得接收到的数据并写入文件和展示在界面上
下载地址和源码
webrtc easy demo
webrtc c++ native 库 demo 实现功能:
基于QT
webrtc摄像头/桌面捕获功能
opengl渲染/多播放窗格管理
janus meeting room
下载地址和源码
wifi,蓝牙 - 无线开关
实现功能:
通过wifi/蓝牙实现远程开关电器或者其他电子设备
电路原理图:
实物图:
深度学习验证工具
虚拟示波器
硬件实物图:
实现原理
基本性能
采集频率: 取决于外部adc模块和ebaz4205矿板的以太网接口速率,最高可以达到100M/8 约为12.5MPS
上位机实现功能: 采集,显示波形,存储wave文件。
参数可运行时配置
上位机:
显示缓冲区大小可调
刷新率可调节
触发显示刷新可调节
又一个modbus调试工具
最近混迹物联网企业,发现目前缺少一个简易可用的modbus调试工具,本软件旨在为开发者提供一个简单modbus测试工具。
主打一个代码简单易修改。
特点:
1. 基于QT5
2. 基于libmodbus
3. 三方库完全跨平台,linux/windows。
开源plutosdr 板卡
1. 完全开源
2. 提高固件定制服务
3. 硬件售价450 手焊产量有线
测试数据
内部DDS回环测试
接收测试
外部发送500MHZ FM波形
matlab测试
2TRX版本
大部分plutosdr应用场景都是讲plutosdr板卡作为射频收发器来使用。
实际上plutosdr板卡本身运行linux 操作系统。是具有一定脱机运算的能力。
对于一些微型频谱检测,简单射频信号收发等应用完全可以将应用层直接实现在板卡上
相较于通过网卡或者USB口传输具有更稳定,带宽更高等优点。
本开源板卡由于了SD卡启动,较原版pluto支持了自定义启动应用的功能。
提供了应用层开发SDK(编译器,buildroot文件系统)。
通过usb连接电脑,经过RNDIS驱动可以近似为通过网卡连接
(支持固件的开发定制)。
二次开发例子
```
all:
arm-linux-gnueabihf-gcc -mfloat-abi=hard --sysroot=/root/v0.32_2trx/buildroot/output/staging -std=gnu99 -g -o pluto_stream ad9361-iiostream.c -lpthread -liio -lm -Wall -Wextra -lrt
clean:
rm pluto_stream
版面分析即分析出图片内的具体文件元素,如文档标题,文档内容,文档页码等,本工具基于cnstd模型