浅谈c++面向对象的封装,继承和多态

浅谈C++的面向对象 文章目录前言如何理解C++面向对象编程封装继承多态拓展:虚函数的一点小规则总结 前言 注:我的笔记风格,可能不会特别官方,不会晦涩难懂,而是以一个初学者能看懂的方式把知识呈现出来,用最简单的语言把抽象的概念表达出来~ 经常谈到面向对象这四个字,那么下面以C++为例,谈一下我对面向对象的理解,请往下看~ 如何理解C++面向对象编程 看以下三点: 1.c++面向对象编程就是把一切事物都变成一个个对象,用属性和方法来描述对象的信息,比如定义一个猫对象,猫的眼睛、毛发、嘴巴就可以定义为猫对象的属性,猫的叫声 阅读详情

封装

c++的封装体现在class关键字上,一个类的定义将数据与操作数据的源代码进行有机的结合,形成一个“类”,封装一些具体实现,按需对外暴露部分属性和方法。

class BaseClass{
public:
    int a;
    void test1();
    virtual void printFunc(){
    cout<<"This is BaseClass."<<endl;
    }
protected:
    int b;
    void test2();
private:
    int c;
};

继承

使用:符号表示类之间的继承关系。分几种继承方式,public继承是public到子类public,protectd到子类的protectd;protectd继承是基类所有public,protectd都到子类的protectd;private继承同理是到自己的private里面.另外这里提一下stuct和class的继承关系,c++的struct是对c中struct的一种增强,支持继承,支持多态,核心的不同点在于struct的默认继承关系是public继承,而class默认是private继承。

class BaseClass{
public:
    int a;
    void test1();
    virtual void printFunc(){
    cout<<"This is BaseClass."<<endl;
    }
protected:
    int b;
    void test2();
private:
    int c;
};
class SubClassA : public BaseClass{
public:
    void printFunc(){
    cout<<"This is SubClassA"<<endl;
    }
    void testA(){
       cout<<a<<endl;
       cout<<b<<endl;
     //cout<<c<<endl; c私有成员无法继承
    }
private:
    int d;
};

多态

c++中多态使用虚函数来实现,关键字virtual,其意义在于允许基类指针调用子类具体实现来达到多态的目地。纯虚函数是在基类中声明的虚函数,它在基类中没有定义,但要求任何派生类都要定义自己的实现方法。在基类中实现纯虚函数的方法是在函数原型后加“=0”,如:
 virtual void funtion1()=0;类似java中的接口和抽象类的约束。另外,c++多态中的动态绑定,函数调用默认不使用动态绑定。要触发动态绑定,满足两个条件:第一,只有指定为虚函数的成员函数才能进行动态绑定,成员函数默认为非虚函数,非虚函数不进行动态绑定;
第二,必须通过基类类型的引用或指针进行函数调用,同时支持重载的多态和重写的多态。

#include <iostream>
using namespace std;

class BaseClass{
public:
    int a;
    void test1();
    virtual void printFunc(){
    cout<<"This is BaseClass."<<endl;
    }
protected:
    int b;
    void test2();
private:
    int c;
};
class SubClassA : public BaseClass{
public:
    void printFunc(){
    cout<<"This is SubClassA"<<endl;
    }
    void testA(){
       cout<<a<<endl;
       cout<<b<<endl;
     //cout<<c<<endl; c私有成员无法继承
    }
private:
    int d;
};

class SubClassB : public BaseClass{
public:
    void printFunc(){
        cout<<"This is SubClassB."<<endl;
    }
    void printFunc(int a){
        cout<<"a is:" << a << endl;
    }
};

// private成员只能由基类的成员和友元访问。
// public继承是public到子类public,protectd到子类的protectd
// protectd继承是基类所有public,protectd都到子类的protectd
// private继承同理是到自己的private里面

// 多态
// C++ 中的函数调用默认不使用动态绑定。要触发动态绑定,满足两个条件:
// 第一,只有指定为虚函数的成员函数才能进行动态绑定,成员函数默认为非虚函数,非虚函数不进行动态绑定;
// 第二,必须通过基类类型的引用或指针进行函数调用
int main(){
    SubClassA* d = new SubClassA();
    d->printFunc();
    delete d;
    d = 0;

    cout << "---------------" << endl;
    BaseClass *b1,*b2,*b3;
    BaseClass bc;
    SubClassA dcA;
    SubClassB dcB;
    b1 = &bc;
    b2 = &dcA;
    b3 = &dcB;
    b1->printFunc(); //调用基类的方法
    b2->printFunc();  //调用派生类A的方法
    b3->printFunc();  //调用派生类B的方法
    dcB.printFunc(6);
    return 0;
}

参考

  1. http://blog.51cto.com/6924918/1279707
  2. https://blog.youkuaiyun.com/xdrt81y/article/details/17143801
5分钟搞定Conflux钱包注册:Fluent钱包从安装到转账全流程指南 本文提供Conflux公链上Fluent钱包的完整注册和使用指南,涵盖从安装、助记词备份到CFX转账的全流程。特别强调安全操作要点,包括助记词保管和网络选择,帮助用户5分钟内快速掌握这款国产公链钱包的核心功能,确保数字资产安全。 阅读详情

相关推荐

Apifox 自动化测试新增流程控制条件,复杂测试场景不再是问题

在 if 条件后的输入框填写请求接口得到的变量 viewed ,选择条件为「小于」,输入比较数值 10 ,并在 if 条件下添加「宠物下架处理」步骤。借助新增的自动化测试流程控制条件,测试人员就可以使用 Apifox 去实现更深层更多样的测试应用场景,帮助提升测试效率,减少复杂场景的测试操作。「查询新建宠物」、「修改宠物状态为已售出」和「查询宠物状态是否修改」步骤为当前在售宠物信息盘点的三个标准步骤,所以将这三个步骤合成一组。在循环中添加「查询在售宠物」和「修改宠物状态」步骤;

877

【c++ 封装、继承、多态】

函数运行的版本不是一开始就确定好了的而是在程序运行的时候才选择函数运行的版本,至于到底选择哪个函数版本取决于调用该函数的指针或者引用实际绑定的数据对象。

小呆鸟blog 6763

超速U盘选购避坑指南:如何通过Rx Detect机制识别真伪USB3.0设备

本文深入解析了USB 3.0超速U盘的选购避坑要点,重点介绍了通过Rx Detect机制识别真伪设备的核心原理。文章提供了从软件检测到实际性能测试的完整方案,帮助消费者和技术人员有效辨别虚假的USB3.0设备,确保获得真正的超速传输体验。

weixin_29189373的博客 443

c++:封装、继承、多态

封装是面向对象编程中的一种重要概念,它将数据和操作封装在一起,形成一个“黑盒子”,对外部只暴露必要的接口,隐藏内部实现细节。C++通过类(Class)来实现封装,其中包括私有成员(Private)、保护成员(Protected)和公有成员(Public)等访问控制修饰符。私有成员只能在类内部访问,保护成员可以在类及其子类中访问,公有成员可以在任何地方访问。首先,在介绍封装前,应该要知道类和对象这么一个事,什么是类和对象?

嵌入式小企鹅的博客 4150

Toeplitz矩阵以及矩阵乘法FFT加速

Toeplitz矩阵以及矩阵乘法FFT加速 1.Toeplitz矩阵 托普利兹矩阵,简称为T型矩阵,它是由Bryc、Dembo、Jiang于2006年提出的。托普利兹矩阵的主对角线上的元素相等,平行于主对角线的线上的元素也相等;矩阵中的各元素关于次对角线对称,即T型矩阵为次对称矩阵。这里我们使用matlab中自带的函数生成一个toeplitz矩阵的例子: x=[1 2 3 4]; y=[1 5 6 7 8 9]; z=toeplitz(x,y); 我们可以得到一个这样的矩阵结果: 我们可以看到,其中x中

thlz 5069

2 君正底层API接口的封装1

君正的IPC芯片主要有T31、T40、T41等型号,每个型号的API接口大部分是相同的,但也存在一些不一致和差异化的地方。为了屏蔽不同芯片型号之间的差异,我们需要基于一个公共基类进行封装。在封装之前,我们需要定义自己的错误码和数据结构,用于屏蔽不同君正芯片的实现细节。为了确保整个IPC库使用统一的错误码,我们在HP_MPPErrorCode.h文件中专门定义了以下错误码。错误码囊括了参数错误、内存错误、溢出错误、不支持、密码错误、非法数据等各种异常情况。

hope_wisdom的技术博客 1587

一文带你了解C++三大特性,封装、继承、多态

C++ 是一种高级语言,本教程是专门为初学者打造的,帮助他们理解与 C++ 编程语言相关的基础到高级的概念。

我宣布个事的博客 1431

(8)(8.19) GPIOs

Ardupilot官网关于《Copter》的翻译 —《(8.19) GPIOs》。

无人机开发(开源Ardupilot) 1万+

C++基础知识(封装继承多态)

面试要点:C++的封装继承多态

壹的博客 1532

【立创EDA-PCB设计基础】1.嘉立创EDA专业版软件安装+PCB基本概念+原理图绘制

本文详解PCB基本概念以及实现MCU最小系统原理图的绘制(原理图包括MCU芯片GD32F103C8T6、外部晶振、输出端口、USB输入口、5v转3v3稳压输出、复位按键、唤醒按键、LED)及嘉立创EDA专业版软件安装。为本专栏【立创EDA-PCB设计基础】后面章节实现PCB绘制做准备。

嵌入式阿齐Archie 3万+

GRCNN抓取网络学习2【自制Jacquard数据集训练】

请先完成【机械臂视觉抓取从理论到实战】,这样有利于下面操作的理解!然后第二步是GRCNN抓取网络1【Jacquard数据集等效抓取集制作】,有了自己的数据集输入到GRCNN中是三种文件,接下来就是准备训练GRCNN网络啦!grasps.txtRGB.png本文帮大家根据自制Jacquard数据集训练GRCNN抓取网络,其中包含数据格式的对齐,列举了常见的几种训练方法,相信能坚持到这里的都应该试试顺利了吧!接下来会针对GRCNN调优,期待一下下吧,那就别宁色你的三连。

vor234的博客 2796

C++的封装、继承和多态

关于C++封装、继承和多态的一些总结,借鉴了很多篇文章,内容太多写不太完,就简单写了一下,详细的内容会有链接在里面,可以结合起来看

Qxxx11的博客 1094

YOLOv8中的可变形卷积改进 | 从DCNv1到DCNv3的多位置替换可变形卷积保姆级实操

可变形卷积(Deformable Convolution)最早由Dai等人在2017年提出,其核心思想是在标准卷积操作的基础上,引入可学习的偏移量(offsets),使卷积核能够自适应调整其采样位置,从而增强模型对目标变形的感知能力。return x本文通过深入探讨可变形卷积在YOLOv8中的应用,详细介绍了DCNv1、DCNv2和DCNv3的原理和实现,并通过实验验证了其在目标检测任务中的有效性。未来,我们将继续探索更多优化策略和技术,提升YOLOv8模型的性能,以应对更复杂的目标检测任务。

一键难忘的博客 4049

浅谈C++多态性

C++编程语言是一款应用广泛,支持多种程序设计的计算机编程语言。我们今天就会为大家详细介绍其中C++多态性的一些基本知识,以方便大家在学习过程中对此能够有一个充分的掌握。   多态性可以简单地概括为“一个接口,多种方法”,程序在运行时才决定调用的函数,它是面向对象编程领域的核心概念。多态(polymorphisn),字面意思多种形状。   C++多态性是通过虚函数来实现的,虚函数允许子类重新定

Hackbuteer1的专栏 25万+

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

浅谈C++多态

最近复习到了C++的多态性,我想把多态性的一些知识点进行下梳理总结。本文所有代码均在windows10的VS2013平台上测试 什么是多态? 多态性(polymorphism)据说最早源自希腊语,从字面上理解就是多种形态,多种形式。具体到C++这种面向对象(OOP)的语言中,其实就是“一种接口,多种实现(方法)”。 多态可分为静态多态和动态多态,具体的分类情况如下: 静态多态和动态多态

xy913741894的博客 1万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

面试浅谈之 C++ 面向对象篇

C++ 面试题—面向对象篇

优质后端技术知识记录 1091

深度学习工具包 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++时用到的【封装继承多态】三个概念

由于C++语言支持这三个特性,所以学习C++时不可避免的要理解这些概念。 而在大部分C++教材中这些概念是作为铺垫,接下来就花大部分篇幅讲语言机制如如何实现这些特性的。 其实以上三个概念是不是OOP编程语言具有的特性,而是现实世界本身所具有的规律,只是OOP提炼了这些特性而已。 而且技术面试时最喜欢问的就是虚函数,而要理解虚函数这三个概念一个都少不了。   下面来分别

Clor001的专栏 851

Java面向对象浅谈——面向对象三大特征:封装、继承、多态

面向对象高级继承继承格式子类实例化内存分析super详解重写(Override)重写(Override)规则重写(Override)与重载(Overload)的区别final关键字作用抽象类概念格式抽象方法不能被实例化常见问题抽象类和普通类的区别接口概念面向接口编程思想全局常量和抽象方法的简写接口的实现 implements接口的继承注意接口和抽象类的区别 继承 继承是Java面对对象很重要的一部分,给类进行等级层次的划分,即分为父类和子类,父类拥有的特征和行为,能被子类继承。 继承格式 class 子类

Meqtix的博客 481

浅谈面向对象三大特性(着重介绍虚函数实现的多态)

浅谈自己关于面向对象三大特性结合日常生活的理解,以及着重分享了c++通过虚函数实现的多态、虚表、虚指针的内容。

qq_52392487的博客 877

C++浅谈组合和继承

C++有三大特性:封装、继承和多态。 之前提到过继承是为了实现代码的复用,如果子类继承了父类那么就会继承父类所有的数据成员及成员函数,在公有继承的时候保持is-a原则,即每个子类的对象也是父类对象。 因此引入了单继承、多继承以及菱形继承等方式。但是正是因为继承太有用、太容易用、很容易实现代码的复用性因此我们需要选择性的继承。 如果A类和B类毫无关系,我们不应该为了让B类多一个功能而去让B继承

persistence_s的博客 3770

浅谈继承与多态

学习C++的人都知道面向对象程序设计有4个主要特点:抽象、封装、继承和多态性。可见继承和多态在C++中占据的分量不一般。 本篇文章分别用阐述概念和举栗说明两种方式研究继承与多态,其中会穿插图片说明,望达到轻松理解C++中继承与多态机制的效果。 继承的概念 所谓继承就是在一个已有类的基础上建立一个新的类。以存在的类称为“基类”或“父类”,新建的类称为“派生类“或”子类”。继承机制可提

tttjp的博客 382

编程语言和面向对象浅谈

编程语言和面向对象浅谈

cnds123的专栏 1390

浅谈面向对象

面向对象是现实世界模型的自然延伸,在现实世界中任何实体都可以看作是对象。对象之间通过消息相互作用。现实世界中任何实体都可归属于某类事物,任何对象都是某一类事物的实例。面向对象具有三大特色:封装,多态,继承。 1. 简单理解类     类就是一个数据结构,封装了数据和操作。 2. 类与对象的关系 说到类不得不提的是对象,对象和类之间就如同群体和个人的关系。例如:人类可以是一个类,张三李四便是

肖氏专栏 1662

深度探索C++对象模型(一):浅谈面向对象

多态 多态–面向对象 C++以虚函数实现多态性 // 接口的多种不同的实现方式 继承–面向对象 封装–面向对象

GeniusIOTboy的博客 285

浅谈Java面向对象

Java的面向对象这里对于初学者来说无疑是一大挑战,从基本的概念到实际操作,上手都不是很容易,在看了很多官方概念资料之后,自己对面向对象更是糊涂。那么这篇文章就有助于你理解什么是面向对象。 目录一、面向对象思想二、类与对象的关系三、类成员变量成员方法 一、面向对象思想 从基本的概念来看: 面向对象(Object Oriented)是一种新兴的程序设计方法,或者是一种新的程序设计规范(paradig...

蔡政洁的博客 438
上一篇: vim常用命令
下一篇: 解决kubernetes宿主机top cpu wa io过高引起的cpu资源耗尽问题
anteoy
博客等级 码龄10年 24粉丝 83原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值