彦舜筹备出书中:继承关系中抽象类中,普通方法中调用被子类覆写的抽象方法

flutter与android混合开发,android开发实习面试题 一面:已知二叉树BT各结点的先序、中序遍历列分别为A、B、C、D、E、F和C、B、A、E、D、F,试画出该二叉树。**二面:**已知一棵树的由根至叶子结点按层次输入的结点序列及每个结点的度(每层中自左到右输入),试写出构造此树的孩子-兄弟链表的算法。**三面主管面:**已知一棵二叉树的前序序列和中序序列分别存于两个一维数组中,试编写算法建立该二叉树的二叉链表。**四面交叉面:**试编写递归算法,输出广义表中所有原子项及其所在层次。一面:哈希HashMap的底层实现。 阅读详情
package cm.abstracts.application;

//这个类用来测试:在抽象类的普通方法中调用抽象方法
public class InstanceFfourtyFive {
	public static void main(String[] args) {
		//有构造方法不一定有对应的抽象方法,有抽象方法必有对应的构造方法
		//通过子类实例化抽象类对象
		Love l = new Hate();
		//直接调用抽象类中定义的抽象方法,其具体内容已经过子类覆写
		l.diaoChou();
	}
}

//创建抽象模板类:父类,必有子类,关键字abstract
abstract class Love{
	//对类中程序自动创建的隐式构造方法,要习惯性创建,养成一种良好习惯
	public Love() {}
	
	//创建抽象类中的普通方法,并在此抽象类的此普通方法中调用抽象方法
	/**	抽象类中可以定义普通方法,最为关键的是,这些普通方法可以直接调用抽象类中定义的抽象方法,而具体的抽象方法是经过子类覆写的	*/
	protected void diaoChou() {
		//经过子类覆写的抽象方法的具体内容
		this.love();
	}
	
	//抽象类中定义的抽象方法
	public abstract void love();
}

//创建子类:抽象类必有子类,一个子类只能有一个抽象类(父类)
class Hate extends Love{
	//对类中程序自动创建的隐式构造方法,要习惯性创建,养成一种良好习惯
	public Hate() {}
	
	@Override  //备注:中文意思覆写、重写、覆盖,重写抽象类中的同名抽象方法
	/**	抽象类中可以定义普通方法,最为关键的是,这些普通方法可以直接调用抽象类中定义的抽象方法,而具体的抽象方法是经过子类覆写的	*/
	//经过子类覆写的抽象方法的具体内容
	public void love() {
		System.out.println("问世间情为何物,直教人生死相许");
		System.out.println("我爱谁,谁爱我,我还能爱谁");
		System.out.println("誓要出书,哪怕自费,字数最起码几十万,近百万");
	}
	
}

彦舜原创,首发

androidble蓝牙开发,android嵌入式开发环境搭建 一面:已知二叉树BT各结点的先序、中序遍历列分别为A、B、C、D、E、F和C、B、A、E、D、F,试画出该二叉树。**二面:**已知一棵树的由根至叶子结点按层次输入的结点序列及每个结点的度(每层中自左到右输入),试写出构造此树的孩子-兄弟链表的算法。**三面主管面:**已知一棵二叉树的前序序列和中序序列分别存于两个一维数组中,试编写算法建立该二叉树的二叉链表。**四面交叉面:**试编写递归算法,输出广义表中所有原子项及其所在层次。一面:哈希HashMap的底层实现。 阅读详情

相关推荐

Java抽象类中,普通方法依赖抽象方法时,抽象方法有入参的实现方法

学些Java的抽象类和抽象方法,书中介绍一个例子:【问题描述】编写一个抽象父类SpeedMeter速度表,提供普通方法getSpeed()计算速度,给子类使用,但留给子类实现抽象方法getRadius(),且getSpeed()依赖getRadius();书中抽象方法getRadius()没有入参,我想试下有入参的实现,由于初学,经过多次调试才调通,总结下经验。【代码示例】抽象父类SpeedMet...

yunshanwl的博客 2284

如何调用抽象类中的抽象方法?以及如何调用接口中的抽象方法?

目录1. 如何调用抽象类中的抽象方法?2. 如何调用接口中的抽象方法? 1. 如何调用抽象类中的抽象方法? 2. 如何调用接口中的抽象方法?

qq_60225495的博客 1万+

51单片机-点亮LED和蜂鸣器

ULN2003是高耐压、大电流达林顿陈列,由七个硅NPN达林顿管组成。ULN2003是大电流驱动陈列,多用于单片机、只能仪表、PLC、数字量输出卡等控制电路中。可直接驱动蜂鸣器、继电器等负载。void delay(u16 i) // i等于1大约10uswhile(i--);//取反,高低电平不断变化,产生脉冲delay(10);// 周期200us。

三日沐水 1126

抽象类在类中调用自己的抽象方法(模板模式)

结论 抽象类在类中调用自己的抽象方法,方法的实现来自它当前的实现类 概述 今天在看AbstractCollection这个抽象类的时候发现了一件很有意思的事情,就是说这个抽象类调用了自己的抽象方法 public abstract Iterator<E> iterator();//这是那个抽象方法 在它类中的toString方法中使用到了,第一眼看上去一脸懵逼,经过百度后,有人说 抽象类在类中调用自己的抽象方法,方法的实现来自它的实现类,当然了,一个抽象类可能多个子类,方法也可能被多次实现,

GDFHGFHGFH的博客 2748

一文讲透什么是ADC/DAC中的DDC、DUC、采样率以及数据率等概念

摘要:ADC/DAC中的采样率与数据率概念不同,采样率是转换器的时钟速率,而数据率是数字输出的实际速率。抽取通过滤波降低数据速率,提升信噪比但牺牲带宽;内插则通过插零和滤波提高采样率,将镜像信号移远但增加延迟和功耗。JESD204B标准的高速转换器需平衡通道数与串行速率,内插/抽取技术是关键。文章还解析了DDC、DUC的应用及优缺点,为高速数据转换设计提供参考。(150字)

weixin_49761275的博客 4264

项目管理-(补充)七种基本质量工具

七种基本质量工具,用于PDCA循环的架构内 解决与质量相关的问题,分为老七工具和新七工具。 1)老七种:刘英只点劣质茶(流程图、因果图、直方图、散点图、帕累托图、控制图、核查表)2)新七种:锯树联亲测动优(矩阵图、树形图、关联图、亲和图、过程决策程序图、活动网络图、优先矩阵)

weixin_42081167的博客 4603

抽象类调用自己的抽象方法,实现来自实现类(很常用)

直接上代码 public abstract class Parent { public abstract void dosomething(); public void say(){ dosomething(); System.out.println("www.chinoukin.com"); } } public class Chi

chinoukin的博客 1万+

MounRiver避坑实录:手把手迁移CH32V307 EVT工程到自定义目录

本文详细记录了将沁恒CH32V307的EVT工程迁移到自定义目录的完整流程与避坑指南。针对MounRiver Studio的虚拟链接机制,重点讲解了如何清理旧配置、重新设置头文件路径、链接脚本等关键步骤,帮助开发者创建独立、可维护的MCU项目工程。

uber9的博客 243

抽象类调用抽象方法的问题

记住:抽象方法是不能调用的 原因就是抽象方法没有方法体。 但是,在一个类中定义了一个抽象方法,在这个类 或 这个类的子类 中是可以调用的。 为什么可以调用呢? 因为,具有抽象方法的类,一定是一个抽象类, 而抽象类在被继承的时候,必须重写这个抽象类的抽象方法, 而且,抽象类不能实例化,在使用这个抽象类的时候,使用的一定是这个抽象类的子类。 故,你在 抽象类 或 抽象类的子类 中可以使用这个抽象方法

lixiaowei522008的专栏 2463

准静态电磁场

叠加法 缺点:对于连续分布的电荷,叠加法的计算比较困难 虚位移法 概念 广义坐标:确实系统中导体形状、尺寸与位置的一组独立几何量。 广义力:企图改变某一广义坐标的力。 功:广义力乘上由它引起的广义坐标的改变量。 公式 ...

qq_35912930的博客 1860

别让你的URDF模型在Gazebo里‘躺平’:手把手教你配置libgazebo_ros_diff_drive插件让两轮小车动起来

本文详细解析了如何在Gazebo中配置libgazebo_ros_diff_drive插件,使两轮小车模型实现动态仿真。从URDF模型到传动装置,再到差速驱动插件的精细调参,手把手教你解决机器人‘躺平’问题,提升ROS1与Gazebo仿真的实战能力。

weixin_42552716的博客 333

Abstract Class (抽象类)

1 package cm.abstracts.define; /** 在本程序的类中定义了一个抽象方法print(),既然类中有抽象方法,那么类就必须定义为抽象类,所以使用了 “abstract class”来定义该类。 但是一定要记住:抽象类只是比普通类多了抽象方法的定义,即关键字abstract,其他结构与普通类完全一样。 */ //这个类用来测试抽象类的定义 public class ModelFthirtySix { static String name; pub

YanShun_Java的博客 772

数控系统(CNC)系列:Hurco VMX42SR_(3).控制系统硬件组成部分

控制箱是CNC系统的核心部分,负责处理所有的控制指令和数据。它通常包含主控板、电源模块、接口板等关键组件。伺服驱动器是CNC系统中的关键组件,负责将主控板发出的控制信号转换为电机所需的驱动电流。它通过闭环控制确保电机的精确运动。电机是CNC系统中的执行机构,负责实现主控板发出的运动指令。常见的电机类型包括步进电机和伺服电机。传感器是CNC系统中的重要组件,用于检测和反馈机床的运行状态。常见的传感器类型包括位置传感器、速度传感器、温度传感器等。电源供应系统为CNC系统的所有组件提供电力。主电源。

2401_87715305的博客 1278

策略模式Strategy——坐什么车回家?

1.存在的问题和模型 :2014年6月       学校:廊坊师范        家:石家庄       人物:学生        又快到期末考试了。回家的节奏也奔上日程,无聊之余就想想这次回家的事儿。对我来说回家主要有两种交通方式:1.汽车。2.火车。像飞机、高铁了什么的咱就不考虑了一个是资金匮乏、条件不同意(廊坊没飞机场吧?)外,廊坊到石家庄这么近搞那么多花样也太伤神经了(尤其对一...

weixin_34081595的博客 124

从Safety Manual到系统安全概念

本文系统阐述了构建功能安全"证据链"的工程化方法论,核心要点包括:1)建立"风险→对策→验证→证据"闭环链条;2)SafetyManual和FMEDA作为关键证据支撑点,前者界定系统安全边界,后者量化诊断覆盖率;3)通过四步法继承芯片安全机制并扩展至系统级;4)形成"设计-分析-验证"三维闭环体系,包括安全目标、技术实现和验证矩阵;5)强调证据链闭环对安全认证和OEM认可的重要性。该方法论实现了从理论要求到工程实践的完整转化,确保安全设计可验证、可

VehSwHwDeveloper的博客 720

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

策略模式Strategy——回家乘什么车?

设计模式 策略模式

Cherie 2278

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

抽象类中的非抽象方法调用自己的抽象方法

抽象类中的非抽象方法调用自己的抽象方法     当一个抽象类中的非抽象方法调用该类自己的抽象方法时,所调用的方法为子类的实现。例: //抽象父类 public abstract class AbstractClassParent { public abstract void abMethod(); public void test(){ ...

weixin_43766090的博客 1228

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

抽象方法和抽象类规则

一 抽象方法和抽象类的规则 1 抽象类必须使用abstract修饰符来修饰,抽象方法也必须使用abstract修饰符来修饰,抽象方法不能有方法体。 2 抽象类不能被实例化,无法使用new关键字来调用抽象类的构造器创建抽象类实例。即使抽象类里不包含抽象方法,这个抽象类也不能创建实例。 3 抽象类可以包含成员变量,方法(普通方法和抽象方法),构造器,初始化块,内部类(接口,枚举)5种成分。抽象类

实践求真知 4657

抽象类中调用自己的抽象方法

抽象类中调用自己的抽象方法 先看代码 public abstract class CompositionTemplate { public final String template(String title,String content, String name) { String str = "这是标题\n" + title + content(content) + "\n这是署名:" + name; return str; } public a

weixin_43935051的博客 843

某些抽象类中有调用抽象方法的代码的原因(抽象方法不是不能被调用吗?)

以下是转载内容:记住:抽象方法是不能调用的原因就是抽象方法没有方法体。但是,在一个类中定义了一个抽象方法,在这个类 或 这个类的子类 中是可以调用的。为什么可以调用呢?因为,具有抽象方法的类,一定是一个抽象类,而抽象类在被继承的时候,必须重写这个抽象类的抽象方法,而且,抽象类不能实例化,在使用这个抽象类的时候,使用的一定是这个抽象类的子类。故,你在 抽象类 或 抽象类的子类 中可以使用这个抽象方法...

qq_37671722的博客 2243

Java中,子类如何调用抽象父类的非抽象(普通)方法?抽象类的构造方法有什么用?

抽象类是无法用new来实例化的,但是可以通过其他途径来实例化:子类在自己构造方法中可以利用抽象父类的构造方法“构造”一个抽象父类的实例对象,进而在子类的方法中调用抽象父类的普通非抽象方法。

qq_41888672的博客 2363

java抽象类。抽象类里面的抽象方法必须被子类全部复写

抽象类:包含抽象方法的类称为抽象类。 抽象方法:只声明而未实现的方法称为抽象方法。必须使用abstract关键字声明。 *抽象类和抽象方法都必须使用abstract关键字声明。 *抽象方法只声明,不需要定义。 *抽象类不能声明对象,必须被继承。 *抽象类中的抽象方法必须被子类全部覆写才能够使用。 如下: publicclassMain { pub

kaka 1万+

java 子类继承抽象类_Java基础系列 - 抽象类,子类继承

packagecom.company;/*** 抽象类继承* 用abstract修饰类就是抽象类* 用abstract修饰方法就是抽象方法(一般使用比较少)* 抽象类不能被实例化*/public classMain {public static voidmain(String[] args) {Animal an= newCat();an.cry();//输出 “猫叫,喵喵喵”an = newDo...

weixin_42399813的博客 1508

java 抽象方法调用_java的抽象类和抽象方法(注意查看如何调用抽象类中的非抽象方法)...

抽象类就是不能使用new方法进行实例化的类,即没有具体实例对象的类。抽象类有点类似“模板”的作用,目的是根据其格式来创建和修改新的类。对象不能由抽象类直接创建,只可以通过抽象类派生出新的子类,再由其子类来创建对象。当一个类被声明为抽象类时,要在这个类前面加上修饰符abstract.在抽象类中的成员方法可以包括一般方法和抽象方法。抽象方法就是以abstract修饰的方法,这种方法只声明返回的数据类型...

weixin_35662019的博客 609
上一篇: 我的心像洋葱,需要一层一层剥开,你才明白这颗心多爱你:Abstract中继承关系中,变量初始化与构造方法的关系
下一篇: 彦舜原创,优快云首发:定义三种商品,他们各自具备的对应功能,并使用
彦舜
博客等级 码龄7年 2粉丝 56原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值