类的封装性

友元:友元可以打破类的封装性,不受权限限制 友元:友元可以打破类的封装性,不受权限限制友元: 友元: 类具有封装性, 权限,友元可以打破类的封装性,不受权限限制 友元函数:c++的普通函数, 不是类的成员函数,如果一个函数被声明为一个类的友元函数, 那么这个函数可以访问这个类的所有成员 优点:不受权限限制可以直接访问类中的任意成员,在一定要程度上可以提高程序效率 缺点:打破类的封装性 声明友元函数格式: friend 返回值数据类型 函数... 阅读详情


class Person //后面使用中提示已定义
{
    String name ;
    int age ;
    void talk()
    {
       System.out.println("我是:"+name+",今年:"+age+"岁");
    }
}




public class TestPersonDemo2 {


public static void main(String[] args) {
// TODO Auto-generated method stub
Person p = new Person() ;
                                             // 给 p 中的属性赋值
p.name = "张三" ;
   // 在这里将对象 p 的年龄属性赋值为-25 岁
p.age = -25 ;
// 调用 Person 类中的 talk()方法
p.talk() ;


}


}

===========================

我是:张三,今年:-25岁

【Python机器学习】零基础掌握RFECV特征选择 通过应用算法,有效地识别了影响购买意愿的关键特征(浏览时长和点击数)和历史货币流通的主要因素(年代、人口和货币流通量)。这样的特征选择不仅提高了模型的解释能力,还可能用于电商推荐系统和历史研究的优化。优点总结,这种方法可以高效地找出对目标变量有最大影响的特征,进而可以用于各种实际应用场景,如电商推荐和历史研究。优点名称对应描述说明高解释性易于理解哪些特征最为重要泛化性能强通过交叉验证提高模型的稳健性应用场景多样可用于电商、金融、历史研究等多个领域。 阅读详情

相关推荐

嘉立创封装图下载后必做的3步优化(附批量删除机械层技巧)

本文针对从嘉立创下载的封装图,系统讲解了三步核心优化流程,以解决其直接使用时的常见问题。重点介绍了如何高效批量删除冗余的机械层,避免制造错误;并详细说明了规范丝印层间距、统一焊盘命名等关键步骤,帮助工程师将第三方封装转化为可靠、合规的设计资源,从而提升PCB设计效率与文件质量。

weixin_29227585的博客 433

类的三大特性-封装

(一)类的封装 (1)类的封装性 1.如果外部的类可以随意修改一个类的成员变量,可能会造成不可预料的程序错误。例如一个人的年龄,必须是在一个正常的范围内,不能被外部随意修改,如果被设成负数,则可能会出现程序错误。 2.在定义一个类的成员(包括变量和方法)时,可以使用private、protected、public等关键字说明这个成员的访问权限。 3.为了实现良好的封装性,通常将类的成员变量声明为private,再通过public的方法来对这个变量进行访问。 4.对一个成员变量,一般有读取和赋值两种操作,一般

陈家豪的博客 2397

Cadence IC618与Spectre231安装配置全攻略:License、环境变量与依赖检查

EDA工具部署中,License管理与环境变量隔离是核心难点。FlexLM作为通用授权机制,通过守护进程和端口配置实现工具授权;环境变量则控制工具路径与库加载顺序,避免版本冲突。合理配置可确保IC618与Spectre231稳定运行,提升仿真效率。典型应用场景包括模拟IC设计、高校实验室及企业级EDA环境。本文聚焦Cadence IC618与Spectre231的安装实践,详解License配置、环境隔离及依赖检查,助你快速搭建可靠设计环境。

weixin_28721917的博客 324

【JavaSE】类与对象--封装性

封装性是面向对象编程中的三大特征之一,封装性就是把对象的成员属性和成员方法结合成一个独立的相同单位,并尽可能隐蔽对象的内部细节。

weixin_50486535的博客 1925

从零开始:如何用大语言模型构建你的第一个路径规划智能体

本文详细介绍了如何利用大语言模型(LLM)构建路径规划智能体,从基础概念到实战案例,涵盖TSP和CVRP问题的解决方案。通过选择合适的LLM模型、设计有效的提示工程和实现自我验证,即使没有运筹学背景也能快速上手。文章还提供了部署与优化智能体的实用技巧,帮助读者在物流配送、机器人导航等领域应用这一技术。

weixin_28256233的博客 487

VBA常见错误 - “错误3706,未找到提供程序,该程序可能未正确安装”解决方法

1、问题描述 在利用VBA编程时,引用其它表格数据,出现以下问题: (1)运行“错误3706,未找到提供程序,该程序可能未正确安装”。 (2)引用数据失败 2、解决方法 下载“Access 2010 数据库引擎”,并安装即可。 https://www.microsoft.com/en-us/download/details.aspx?id=54920 AccessDatabaseEngine 2010 官方安装包,官网下载不了的可以来这里下载。(1)运行“错误3706,未找到提..

Nemuel的博客 3万+

Java类的三大特性之一:封装性

阿萨德大奥所

瓦坎达会议室 6776

从AAAI 2025被拒到ACM MM 2025录用:我的论文投稿经验与教训总结

本文分享了作者从AAAI 2025被拒到ACM MM 2025录用的论文投稿经验与教训。详细解析了格式要求、可复现性清单等关键细节,提供了精准转投策略和提升录用概率的实用技巧,帮助研究者避免常见错误并优化投稿策略。

weixin_29207533的博客 502

java三大特性(封装、继承、多态)

1、final(最后)被abstract修饰的方法,强制要求子类重写,被final修饰的方法子类不能重写2、private(私有)被abstract修饰的方法,强制要求子类重写,被private修饰的方法子类不能重写3、static(静态)被static修饰的方法可以类名调用,类名调用抽象方法没有意义。

Aas1180的博客 1907

销售预测的方法与模型(三)丨安全库存与再订货(补货)

较高的 Z 值对应较高的服务水平(例如,服务水平 99% 对应 Z 值 2.33),意味着企业希望更低的缺货风险,因此需要更高的安全库存。在再订货点的管理中,考虑到供应商交货的不确定性,通常需要结合安全库存,以防止在交货期间库存用尽。要对L开根号,根号L表示交货周期越长,企业需要的安全库存越多,因为在较长的供应期内,需求波动的累积效应更明显。举例:供应商的交期服从标准差为2件/天的正态分布,顾客需求为50件/天的正态分布,若要客户服务水平达到 90%,安全库存量应该是多少?下面介绍几种核心的模型与公式。

weixin_45675709的博客 1534

【华为OD机试真题 新系统】1029、字符串处理 | 机试真题+思路参考+代码解析(C++、Java、Py、C语言、JS)

【华为OD机试真题 新系统】1029、字符串处理 | 机试真题+思路参考+代码解析(C++、Java、Py、C语言、JS) 华为od机试,华为od机试真题,华为od机试E卷,华为odE卷,华为od机试真题E卷,华为OD,华为OD机试,华为OD机试真题,华为od机考,华为od机试D卷,华为od机试真题D卷,华为od手撕代码,华为od,华为od机试C卷,华为od e卷,华为2026e卷,od机试,2026E卷,华为OD机试E卷,什么是华为od,华为od介绍,全面了解华为od,2026华为od,如何备战华为od,

KJ.JK 218

类的三大特性(封装、继承、多态)

重写的函数和被重写的函数必须都为virtual函数,并分别位于基类和派生类中,如果父类被重写的函数加了vritual,子类继承父类,那么子类重写的函数加不加vritual都是虚函数重写的函数和被重写的函数,返回值,函数名和函数参数必须完全一致;封装的目的是保护对象的内部状态,防止外部直接访问和修改对象的数据,确保数据的完整性和程序的安全性。继承促进了代码的复用和模块化,通过继承一个基类,子类可以继承基类(父类)的所有特性,同时还可以添加新的特性或者覆盖基类中的方法。例如:设计一个圆类,求圆的周长。

2401_88249494的博客 1607

全球气候模式降尺度方法总结及其代码实现

简介总结各类型气候模式降尺度方法

WW、forever的博客 1万+

c++中类的封装性

c++中类的三个特性: 1、封装性 2、继承性 3、多态性 这里谈一下对类的封装性的理解: c语言中,我们将多个不同类型的数据放在一起,用struct结构体; C++中,进行了丰富,将数据(成员变量)和函数(成员函数)封装在一起,起了一个新的名字class类。 struct中默认的变量都是public; class中默认的变量属性是private,(封装性的体现,类对象无法访问)。 class中成员函数将出错处理(比如,打印错误日志,return等)封装在一个一起。(封装性的体现) cl

modi000的博客 2134

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

java类的封装性

1 类的封装性设计原则 类通常采用public修饰 成员变量采用private修饰 构造方法采用public修饰 get和set的成员方法用public修饰   访问控制方式 public 所有 protected 同一个包中和不同包的子类 default 同一个包中 private 同一个类中    ...

qq_36242198的博客 289

深度学习工具包 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")

C++进阶—第六章 类的封装性

6.类的封装性 6.1初始类 计算机语言中有2个重要概念:数据、算法。过程化编程强调算法,对象化编程强调数据。同类型数据存放在数组中,不同类型数据存放在结构体中,若要把不同类型的数据和对数据的处理算法放在一起,这就引申出了类。 在类中不仅可以存放不同类型的数据,还可以存放函数,这样就把数据和算法统一起来管理。类中的数据称为数据成员,类中的函数称为成员函数。类和结构体一样,其结尾需要使用分号来...

Bing_bing_bing_的博客 613

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

类的三大特性之一的封装性

java的三大特性之一的封装性:     我们为什么要使用把属性封装起来的方法,这样做有什么好处么? 封装就是将属性私有化,提供公有的方法访问私有属性。这句话怎么去理解呢!这句话的意思就是说,先 把原有的属性用修饰符private那么我们怎么去访问类里面的变量了呢,就是通过get和set给我们提供的 公共的方法去访问封装中得变量。 封装性的具体实现步骤: 1.修改属性的可见性来限制

窥望奇妙世界 1328

类--封装性(第一篇)

第十章 类和对象 一.类和对象的定义 1.从结构体到类 在现实生活中,任何事物都可以称为对象,每一个对象都具有动态属性和静态属性,一般将对象的数值属性称为静态属性,将对象可进行的动作称为动态属性。 a. 结构体:描述对象的静态属性 b. 类:把对象可进行的操作也加入到对象的描述中,这样的描述称为类。“类” 是对具有相同属性和行为的一个或多个对象的描述。类是面向对象程序设计基础。 c. 补充前面知识点: —给结构体成员的赋值(两种方法): 对成员一个一个赋值:字符串类: strcpy(a.name,“wan

m0_50269977的博客 1000

类的三大要素:封装性、继承、多态

类的学习总结 类分为封装,继承,多态 类的封装性:类防止像结构体一样被外部修改所以类就有封装性,默认的class如果没有声明的话一般就是private的这样的数据成员只能用该类里面的成员函数进行访问,public的成员可以在类外进行直接访问没有安全性,protect成员只能是该类能对这种数据成员进行访问,在别的类里面无法进行访问同样需要调用函数,还有就是类里面的函数一定要有返回值,否则没法改动原来...

ProgreamA的博客 3529

用坦克比喻理解类的封装性

在学习面向对象编程时,类的封装性是一个重要的概念。很多人在理解封装性的时候会感到有些抽象,其实我们可以用一个形象的比喻 —— 坦克,来帮助理解类的封装性。

weixin_56334307的博客 494

类的封装性 private

类的封装性 Java主要通拓过private和public两种访问权限修饰符控制类中成员(变量、方法)是否可以被访问; public表示公共的,它所修饰的成员变量和成员方法能够被任何其他类和程序所访问(调用); private表示私有的,它所修饰的成员变量和成员方法除了本类中自己的方法可以直接访问、调用外,不能被其它类和程序所访问调用; 如何访问封装棋类的成员变量呢? 可以采用一个成员变量的方法来设置(修改)私有成员变量的值,这样的方法名通常含有“set()”,因此通常称为se...

LL__Sunny的博客 483

C++中类的封装性和信息隐蔽

1.公用接口与私有实现的分离 C++通过类来实现封装性,把数据和与这些数据有关的操作封装在一个类中。 在面向对象程序的设计中,在声明类时,一般把所有的数据指定为私有的,使它们与外界隔离,把需要让外界调用的成员函数指定为公用的,这样外界通过公用的函数来实现对数据的操作。因此,公用成员函数是用户使用类的公用接口,或者说是类的对外接口。 通过成员函数对数据成员进行操作称为类的实现。为了防止用户任意...

Rock N' Roll Forever 877

类的封装性和信息隐蔽【C++】

类的封装性和信息隐蔽(C++)

qq_45783047的博客 1117

c++语言---指针破了类的封装性

成也指针,败也指针;生活的美好,全看心态。 指针破会了类封装性和安全性:如果类的成员变量中指针的变量,且我们对其直接赋值(即浅度拷贝),那么成员指针变量会直接指向类外传入的地址。这就意味,成员指针变量指向地址的值会受类外创建该地址的变量的变化而变化。 下面举个例子: 所以,如果成员变量中有指针,使用深度拷贝: ...

silently_frog的博客 395

JAVA类和对象;封装性;this

1. 面向对象和面向过程的区别 2. 面向对象的相关概念 类:是一组相关属性和行为的集合。可以看作是一类事物的模板。使用其属性和行为特征来描述这一类事物 属性:事物的状态信息(成员变量) 行为:事物能做的动作(成员方法) 3. 定义格式: 修饰符 class 类名{//类名采用大驼峰 成员变量1 成员变量2 ... 成员方法1 成员方法2 ... } /* 注意事项: 1.成员变量直接定义在类中,在方法之外 2.成员方法不屑static修饰符 3.成员变量和局部变量的区别: (1)局部变量定义在

qq_42424228的博客 156

C++中friend对类封装性的强大破坏性

     写这篇文章的动机来源于网友purewinter在我的那篇《重读《设计模式》之学习笔记(三)--SINGLETON模式的疑惑》中的评论。    在那篇文章中,我提供了如下一个用C++实现的Singletion模式的小例子:class ClxSingletonMEC{public:    friend ClxSingletonMEC& InstanceMEC();private:  

寒星轩 1万+
上一篇: fun()方法
下一篇: 构造方法
corpse2010
博客等级 码龄17年 101粉丝 118原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值