JAVA – 虚函数、抽象函数、抽象类、接口_对比C++
1. Java虚函数
虚函数的存在是为了多态。
C++中普通成员函数加上virtual关键字就成为虚函数
Java中其实没有虚函数的概念,它的普通函数就相当于C++的虚函数,动态绑定是Java的默认行为。如果Java中不希望某个函数具有虚函数特性,可以加上final关键字变成非虚函数
PS: 其实C++和Java在虚函数的观点大同小异,异曲同工罢了。
2. Java抽象函数(纯虚函数)
抽象函数或者说是纯虚函数的存在是为了定义接口。
C++中纯虚函数形式为:virtual void print() = 0;
Java中纯虚函数形式为:abstract void print();
PS: 在抽象函数方面C++和Java还是换汤不换药。
3. Java抽象类
抽象类的存在是因为父类中既包括子类共性函数的具体定义,也包括需要子类各自实现的函数接口。抽象类中可以有数据成员和非抽象方法。
C++中抽象类只需要包括纯虚函数,既是一个抽象类。如果仅仅包括虚函数,不能定义为抽象类,因为类中其实没有抽象的概念。
Java抽象类是用abstract修饰声明的类。
PS: 抽象类其实是一个半虚半实的东西,可以全部为虚,这时候变成接口。
4. Java接口
接口的存在是为了形成一种规约。接口中不能有普通成员变量,也不能具有非纯虚函数。
C++中接口其实就是全虚基类。
Java中接口是用interface修饰的类。
PS: 接口就是虚到极点的抽象类。
5. 小结
C++虚函数 == Java普通函数
C++纯虚函数 == Java抽象函数
C++抽象类 == Java抽象类
C++虚基类 == Java接口
--------------------------------------------------------------转自csdn http://blog.csdn.net/trojanpizza/article/details/6556604
转载于:https://www.cnblogs.com/woqunimeidebokedizhi/p/3353800.html
JAVA – 虚函数、抽象函数、抽象类、接口_对比C++相关推荐
- c++虚继承和虚函数和抽象类、接口类,聚合类
虚继承 虚继承用于解决多继承条件下的菱形继承问题(浪费存储空间.存在二义性). 底层实现原理与编译器相关,一般通过虚基类指针和虚基类表实现,每个虚继承的子类都有一个虚基类指针(占用一个指针的存储空间, ...
- 9-2:C++多态之纯虚函数和抽象类以及接口继承和实现继承
文章目录 (1)纯虚函数和抽象类的概念 (2)抽象类的意义 (3)接口继承与实现继承 (1)纯虚函数和抽象类的概念 如果一个类的虚函数后面写上=0,同时不写它的实现,那么这样的虚函数称之为纯虚函数,包 ...
- C++基本概念复习之二:多重继承、虚继承、纯虚函数(抽象类)
一.多重继承: #include <iostream> using namespace std; class Horse { public: Horse(){cout<<&qu ...
- C++之纯虚函数和抽象类
纯虚函数和抽象类 1.基本概念 2.案例 #include <iostream> using namespace std;////面向抽象类编程(面向一套预先定义好的接口编程)//解耦合 ...
- C++ 纯虚函数与抽象类
1.虚函数 1.1 虚函数简介 可以毫不夸张地说虚函数是C++最重要的特性之一,我们先来看一看虚函数的概念. 在基类的定义中,定义虚函数的一般形式为: virtual 函数返回值类型 虚函数名(形参表 ...
- C++学习12:C++多态、虚函数、虚析构函数、纯虚函数、抽象类
一 多态概述 C++中的多态分为静态多态和动态多态.静态多态是函数重载,在编译阶段就能确定调用哪个函数.动态多态是由继承产生的,指同一个属性或行为在基类及其各派生类中具有不同的语义,不同的对象根据所接 ...
- c++ 纯虚函数和抽象类那些事(一)
1.纯虚函数与抽象类 C++中的纯虚函数(或抽象函数)是我们没有实现的虚函数!我们只需声明它!通过声明中赋值0来声明纯虚函数! 纯虚函数:没有函数体的虚函数 抽象类:包含纯虚函数的类 /*** @br ...
- C++纯虚函数和抽象类
基本概念 纯虚函数和抽象类 纯虚函数是一个在基类中说明的虚函数,但是在基类中没有定义,要求任何派生类都定义自己的版本 纯虚函数为个派生类提供一个公共界面(接口的封装和设计.软件模块功能的划分) 纯虚函 ...
- C++纯虚函数与抽象类
纯虚函数 1.1纯虚函数是在声明虚函数时被"初始化"为0的函数.声明纯虚函数的一般形式为: virtual 函数类型 函数名 (参数列表) =0; 如 virtual float ...
最新文章
- let const var 比较说明
- 家中电脑无法共享,联通域名解析劫持竟是罪魁
- Pyhon Django 表单类ModelForm注册案例(可直接操作数据库)
- leetcode| 94. 二叉树的中序遍历
- 手机访问内网IIS服务器网页的方法
- 大屏数据可视化效果如何提升
- spss聚类分析_【SPSS数据分析】SPSS聚类分析的软件操作与结果解读 ——【杏花开生物医药统计】...
- eXtremeComponents介绍
- python图片背景透明
- npm WARN read-shrinkwrap This version of npm is compatible with lockfileVersion@1, but package-lock.
- Adroid游戏开发实例讲解(四)-电子白板附源码
- FineReport根据查询参数显示和隐藏列
- DoTween延时办法
- Qt中 gui 模块和 widgets 模块的区别
- [复现]Thinkphp5系列漏洞
- python爬虫BeautifulSoup库抓取500彩票网竞彩足球信息并在excel表中对中奖赔率设置格式
- sql中like的所有用法
- 纽卡斯尔大学计算机硕士申请,纽卡斯尔大学计算机工程方向硕士录取
- cgroup限制虚拟机内存的来龙去脉
- Topaz Gigapixel AI 5.3.1 智能图像无损放大软件汉化版
热门文章
- outermost shell_outermost是什么意思_outermost的翻译_音标_读音_用法_例句_爱词霸在线词典...
- vue实现点击高亮效果_vue结合Echarts实现点击高亮效果的示例
- finalshell文件列表不显示_软网推荐:文件变动我知晓
- python 字符串替换_python字符串替换的2种方法
- oracle样例数据库,创建和准备Oracle样例数据库
- Sleep 方案解决主备延迟
- clickhouse CollapsingMergeTree表引擎
- hive窗口函数入门
- Hive 存储格式入门
- Hbase与zookeeper