JAVA & C++ 向上转型 区别

C++对象向上转型 1. 什么是对象向上转型 将派生类对象赋值给基类对象、将派生类指针赋值给基类指针、将派生类引用赋值给基类引用,这在 C++ 中称为向上转型(Upcasting)。 理解基类和派生类之间的类型转换是理解C++语言面向对象编程的关键所在。(出自《c++ primer》) 2. 对象向上转型对象之间不存在对象转型,转换过程中会忽略派生类的部分。因此,在这种转换的实际发生过程往往与我们期待的有所差 阅读详情
转载:http://www.cnblogs.com/lxw0109/p/CPP_JAVA.html

package org.lxw.demo;

class A
{
    public void f1()
    {
        System.out.println("A:f1");
    }
    public void f2()
    {
        System.out.println("A:f2");
    }
};
class B extends A
{
    public void f1()
    {
        System.out.println("B:f1");
    }
    public void f3()
    {
        System.out.println("B:f3");
    }
};
public class Hello {
    public static void main(String[] args) {
        B b = new B();
        A a = b;
        b.f1();        //B:f1
        a.f1();        //B:f1
    }
}
复制代码

  上面所示的是JAVA中的向上转型,如果所调用的方法被子类覆写过,则调用的是子类中被覆写之后的方法。

 

复制代码
#include <iostream>
using namespace std;

class A
{
public:
    void f1()
    {
        cout << "A:f1" << endl;
    }
     void f2()
    {
        cout << "A:f2" << endl;
    }
};
class B : public A
{
public:
    void f1()
    {
        cout << "B:f1" << endl;
    }
    void f3()
    {
        cout << "B:f3" << endl;
    }
};
int main() {
    B b;
    A a = b;
    b.f1();        //B:f1
    a.f1();        //A:f1
    return 0;
}
复制代码

  此处所示的是C++中的向上转型,此处即使所调用的方法被子类覆写,但并没有形成多态,则调用的仍是父类中的方法。

  形成多态的条件: ①C++父类中必须要有虚函数(即virtual关键字)②必须存在父类的指针或引用。

  两个条件同时具备时,才会发生多态,缺一不可。


C和CPP的区别 & C++,Java and Python的区别 今天在论坛上看到两个学神讨论C++的优劣性引申出来的各种问题,深深感觉自己差距很大,现就部分问题做个小的总结。 C和CPP的区别: 1. C没有bool类型。布尔类型是int。0是假,非0是真。     2. C里字符常量(如'a'、'\n'、'\0'等)是int型,而C++里是char型。但这不影响使用。     3. 没有引用类型的变量,一般使用指针。函数的参数也不能是引用类型,想 阅读详情

相关推荐

GCC和G++有什么区别?c++和g++程序的区别?GCC只能编译C语言吗?gcc 1.cpp和g++ 1.cpp有什么区别?

gcc命令不止能编译C语言,还可以编译C++(内部等同于调用g++)或Fortran等(编译其它语言相当于调用对应语言的编译器),g++只能编译C或者C++.如果仅仅考虑C语言,参考此公式:g++ == gcc -xc++ -lstdc++ -shared-libgcc.

编程语言开发、框架原理、编程思想、最佳实践技巧经验分享。致力于各种编程技术的技巧经验干货分享,讲解开发避坑技巧,追踪开发前沿技术,实战展开解决难题。 程序员小迷助您在编程路上越走越好! 1433

C++与Java比较之向上转型

前几天看Mars老师的视频教程,里面有这样一句“一个引用能调用那些成员属性(变量和函数),取决于引用的类型;调用的方法取决于引用所指向的对象。(向上转型)” 今天在使用C++的upcast时感觉不对啊?网上搜了下原来Java和C++的向上转型的机制不同。 C++向上转型使用静态邦定,所以在无法识别类类型引用或指针调用对应类的成员函数方法。 c++示例: class Ba

robin-wei 专注于linux嵌入式 2040

Java和C++的区别

Java:方法定义:Java方法必须在类内部定义,所有方法都是虚方法(可以被子类重写)。重载:Java支持方法重载,即方法名相同但参数列表不同。C++:方法定义:C++方法可以在类内部或外部定义,默认情况下方法不是虚方法(除非使用virtual关键字)。重载和重写:C++支持方法重载和方法重写(使用virtual关键字)。// Java 示例:方法定义// C++ 示例:方法定义public:return 0;

小硕算法工程师 860

java 向上向下转型和C++基本一致

父子对象之间的转换分为了向上转型和向下转型,它们区别如下: 向上转型 : 子类引用的对象转换为父类类型,这种属于自动转换。 向下转型 : 父类引用的对象转换为子类类型,这需要借助强制转换。 其实我更想说,从子转父,是大范围转小范围,因为子类的属性和方法肯定比父类多,不知为何网上都说小转大。 1. 向上转型 这个经常伴随着多态现象: class Animal { void Move() { System.out.println("Animal is moving!"); } } class Do

二进制君 772

Java通过JNA或JNI调用C++动态库

Java通过JNA或JNI调用C++动态库

HXcool的博客 3446

【Unity】制作简易三维场景

本文介绍如何制作一个三维场景

CiNian_的博客 5332

C++ 向上转型

在 C++ 中经常会发生数据类型的转换,例如将 int 类型的数据赋值给 float 类型的变量时,编译器会先把 int 类型的数据转换为 float 类型再赋值;反过来,float 类型的数据在经过类型转换后也可以赋值给 int 类型的变量。 数据类型转换的前提是,编译器知道如何对数据进行取舍。例如: int a = 10.9; printf("%d\n", a); 输出结果为 10,编译器会...

weixin_45743799的博客 1525

大数据 DataX-Web 详细安装教程

大数据 DataX-Web 详细安装教程

GG Bond 的博客 1万+

【C++学习记录3】向上转型

向上转型的概念及怎么理解额

weixin_44355021的博客 448

AHP层次分析法在项目风险评估中的实战应用(含Excel模板)

本文详细介绍了AHP层次分析法在项目风险评估中的实战应用。通过构建风险层次模型、利用判断矩阵量化主观判断,并结合Excel工具进行权重计算与一致性检验,将模糊的定性风险转化为清晰的量化排序。文章以新产品上线项目为例,提供了完整的分析流程和可操作的Excel模板,帮助项目经理高效识别并优先处理核心风险。

weixin_29061465的博客 570

Vivado IP核综合失败别慌:除了打补丁,这个TCL命令也能救急(以Video Frame Buffer为例)

本文详细解析了Vivado IP核综合失败的排查方法,特别是针对Video Frame Buffer Read IP的常见问题。从补丁安装到深入分析DCP文件生成机制,再到使用强大的TCL命令`foreach ip_in_proj [get_ips] {compile_c [get_ips $ip_in_proj]}`强制重编译,提供了一套完整的解决方案。帮助开发者快速定位并解决IP核综合失败问题,确保项目顺利进行。

weixin_30892889的博客 422

Java中的向上转型和向下转型

最近在学习JAVA的抽象、封装、继承、多态,遇一个有趣的小Demo,然后上网看到了这边,阅读之后终于理解了... 转型是在继承的基础上而言的,继承是面向对象语言中,代码复用的一种机制,通过继承,子类可以复用父类的功能,如果父类不能满足当前子类的需求,则子类可以重写父类中的方法来加以扩展。 向上转型:子类引用的对象转换为父类类型称为向上转型。通俗地说就是是将子类对象转为父类对象。此处

Heavy_Dream的博客 542

光谱预处理最简单实现方法--基于OpenSA光谱分析库

系列文章目录 “光晰本质,谱见不同”,光谱作为物质的指纹,被广泛应用于成分分析中。伴随微型光谱仪/光谱成像仪的发展与普及,基于光谱的分析技术将不只停留于工业和实验室,即将走入生活,实现万物感知,见微知著。本系列文章致力于光谱分析技术的科普和应用。 文章目录系列文章目录前言一、数据来源二、代码解读2.1 读取数据2 .2 划分数据集2 .3 返回训练集和测试集并绘制光谱图片2.4 建立1-D CNN模型2.5 训练1-D CNN模型2.6 测试1-D CNN模型2.7 运行CNN模型,并用查看结果总结

Echo_Code的博客 7064

C++ (P160—)多继承 二义性 虚基类 “向上转型”

1 多继承中,必须给每个基类指定一种派生类型,如果缺省,相应的基类则取私有派生类型,而不是和前一个基类取相同的派生类型 2 一个类的保护成员只能被本类的成员函数或者它的派生类成员函数访问 3 由于c++中不允许对类成员进行初始化,但是在编程时需要用特定的值去初始化派生类的对象,这时需要通过为派生类定义一个带有初始化列表的构造函数来实现。 class D:public B,pri...

155

桑基图实战指南:Excel/Python/R三工具高效绘制方法

桑基图是一种以线条宽度编码流量大小、以节点位置表达流程阶段、以连接关系呈现数据流向的专项可视化技术,其核心原理在于‘宽即量、位即序、连即逻辑’。它并非装饰性图表,而是面向业务诊断的分析前置工具,尤其适用于预算分配、能源损耗、用户转化等存在明确单向流动与显著数值差异的场景。相比传统柱状图或漏斗图,桑基图能天然暴露系统瓶颈与隐性损耗,大幅提升决策效率。本文聚焦工程落地,覆盖Excel插件快速交付、Python Plotly交互开发、R networkD3生态集成三大主流路径,兼顾数据准备铁律、索引映射规范与中文

cuml0912的博客 487

ue 蓝图 c++ websocket 事件回调

ue 蓝图 c++ websocket 事件回调

jacke121的专栏 166

java和C++中的上转型问题的区别

JAVA上转型问题,我想就是C++的同名覆盖。。。由于现在在研究java.发现了在上转型问题上,两者确实存在一些比较大的区别,我想区别的来源主要是由于JAVA中使用的都是别名。如下例子说明了这个问题,应该看一下就知到什么回事了。//java.code//public class ttest{public static void main (String[] args) {

959

3 ATK2(AUTOSAR OS)代码移植-目标硬件及编译环境简介

该部分介绍ATK2代码移植的目标硬件以及编译环境

xiaoduanduansad的博客 717

Java的特性与C++的区别

总之,Java和C++都是非常流行的编程语言,它们各自具有独特的特点和优势。System.out.println("较大的数是:" + max);cout << "较大的数是:" << num1 << endl;cout << "较大的数是:" << num2 << endl;System.out.println("请输入第一个整数:");System.out.println("请输入第二个整数:");cout << "请输入第一个整数:";cout << "请输入第二个整数:";

2301_79903190的博客 1932

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

java 中的& &&区别以及 C++ 中& &&的区别

java中的 &amp; &amp;&amp;两个运算符 (1).&amp;在java中称做: 逻辑与 判断boolean类型,只有两者都是true时,才会返回true 举例: boolean b1=false; boolean b2=true; boolean b3=b1&amp;b2; 此时b3为false (2).&amp;&amp;在java中称做: 短路与 也是只有都为true时,...

weixin_30376453的博客 162

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

C++与Java的区别

其实无论是C++还是Java,都是面向对象的语言,有很多相似的特性:抽象、继承、封装、多态、代码的可重用性等等,在语法和概念上也极其相似。也有一些区别:C++是编译型的高级语言而Java是解释性的高级语言,C++拥有更快的编辑和执行速度,而Java也拥有着兼容性良好的优势,C++更适用于底层开发方面,Java更适用于网络编程方面,两种语言各有所长。在一些语法结构和对象的处理上也有所不同,而且Jav...

weixin_43343890的博客 733

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

JAVA中上转型对象的详细解释

JAVA中上转型对象的详细解释 首先是方法的参数是父类对象,传入子类对象是否可行 然后引出Parent p = new Children(); 这句代码不是很理解,google的过程中引出向上转型 要理解向上转型又引出了动态绑定 从动态绑定又引出了静态绑定 程序绑定的概念: 绑定指的是一个方法的调用与方法所在的类(方法主体)关联起来。对java来说,绑定分为静态绑定和动态绑定;或

Jian_Sir的专栏 1万+

c++与java区别_JAVA和C++区别详解

 1)java是解释性语言,java程序在运行时类加载器从类路经中加载相关的类,然后java虚拟机读取该类文件的字节,执行相应操作.而C++编译的 时候将程序编译成本地机器码.一般来说java程序执行速度要比C++慢10-30倍.即使采用just-in-time compiling (读取类文件字节后,编译成本地机器码)技术,速度也要比C++慢好多.  2)java程序有要从网络上加载类字节,...

weixin_39852953的博客 4129

C++ 、java 和 C# 的区别

一、基础类型 c++: ** java:** C#: 1.以java为准,c++里面的int short long 像这样的整型 一般都有unsigned 和signed的区分 ,这个跟java和c# 的区别比较大,但c#里面有unit ulong ushort 这三种就相当于c++的修饰词unsigned,当c++李明的变量类型定义unsigned,就默认是整数。 2.java和c#里面都有字符串型 和byte型, 但c++里面没有,但它是以另外的形式存储这类型的数据的,

程序员ken的博客 1833

Java泛型 与 C++的模板有什么区别

C++ 模板: 功能更强大,支持复杂的模板元编程和特化,编译时生成不同版本的代码,性能上更具优势,但类型安全检查较晚,调试难度较高。Java 泛型: 提供类型安全、简单易用的泛型机制,适合大多数应用场景,运行时使用类型擦除,限制了灵活性和某些高级用法,但带来了更简洁的字节码和运行时表现。

5-StarrySky的博客 1381

Java与C++的区别

JAVA和C++都是面向对象语言。也就是说,它们都能够实现面向对象思想(封装,继乘,多态)。而由于c++为了照顾大量的C语言使用者,从而兼容了C,使得自身仅仅成为了带类的C语言,多多少少影响了其面向对象的彻底性!JAVA则是完全的面向对象语言,它句法更清晰,规模更小,更易学。它是在对多种程序设计语言进行了深入细致研究的基础上,摒弃了其他语言的不足之处,从根本上解决了c++的固有缺陷。 一、Jav

ByebyeLazy的专栏 1285
上一篇: Java中final、finally和finalize的区别(转)
下一篇: JAVA中Final的用法
panfengsoftware
博客等级 码龄20年 38粉丝 34原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值