首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

将两个类赋给同一个变量,这可能吗?

将两个类赋给同一个变量是不可能的。在大多数编程语言中,变量的类型是静态的,即在声明变量时就确定了其类型。一个变量只能持有一个特定类型的值,而不能同时持有两个不同类型的值。因此,将两个类赋给同一个变量是不合法的操作。

在某些动态类型语言中,变量的类型可以在运行时动态改变,但是仍然不能将两个类赋给同一个变量。在这种情况下,变量可以持有不同类型的值,但是每个值都必须是一个类的实例。因此,将两个类赋给同一个变量仍然是不可能的。

总结起来,无论是静态类型语言还是动态类型语言,将两个类赋给同一个变量都是不可能的。每个变量只能持有一个特定类型的值。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

python048_用变量赋值_连等赋值_解包赋值_unpack_assignment

) 给变量 赋值 可以 用 变量 给变量 赋值 吗?...内存地址 就是s1 所在的内存地址 图解 地址是 同一个 两个变量 都指向了 这个 地址 完成了 变量的复制 为什么要 用 变量 对 另一个变量 赋值 呢?...变量b 类型 与a相同 引用地址 也与a相同 a 和 b 引用 同一个 地址 此地址 存的值 是1 如果 把2 再赋给a 呢?...连等赋值 一行之中 可以给 多个变量赋值 这就相当于 两次赋值 先算右边的等号 b = 3 将 3 赋给 b 再算左边的等号 a = b 将 b 赋给 a 两个等号 两次 赋值 如果...两个等号 这次 所赋的值 很大 不在 常用地址范围 中 属于 边远地址 但是 a和b 所指向的地址 仍然 是 同一个地址 逗号分隔 输出两个变量的方式叫做 pack 打包 能否 给

5010

Python变量类型及变量引用

二、变量的类型        Python 不包含像 int 这样的简单类型 —— 只有对象类型, 如果 Python 中需要整数值,将整数赋值给相应变量(如i = 100 )即可。...在后台,Python 将创建一个整数对象,并将对新对象的引用赋值给变量。         问题的关键是:Python 是一种动态类型化语言,所以无需声明变量类型。...变量的引用是可变的! 好,那么自然剩下的就是可变的对象了,上面的实验亦可以很容易的证实字典、列表、集合和类实例等对象是可变的。那么,这意味着什么呢?...其实说白了也简单,就是把参数里传入的东西对相应对象的引用依次赋给对应的内部变量(有点晕吗?)。看看第一个实验,有没有明白些什么?...如果一个函数里面使用了一个变量,那么 Python 会先看看有没有对应的本地变量,如果没有找到,但找到一个全局变量,那么 Python 会把那个全局变量的引用赋给一个新的本地变量。

2.5K30
  • Java Review (七、面向对象----方法深入)

    这里可能产生 个问题: 同一个类里不同方法之间相互调用时,不就可以直接调用吗?...a的值 int tmp = a; // a的值赋给b a = b; // 把临时变量 tmp的值赋给b b = tmp; System.out.println("swap方法里,...main()方法中的a、b变量作为参数值传入swap()方法,实际上是在swap()方法栈区中重新产生了两个变量a、b,并将main()方法栈区中a、 b变量的值分别赋给swap()方法栈区中的a、b参数...这就是值传递的实质: 当系统开始执行方法时,系统为形参执行初始化, 就是把实参变量的值赋给方法的形参变量,方法里操作的并不是实际的实参变量。...如果同一个类中包含了两个或两 个以上方法的方法名相同,但形参列表不同,则被称为方法重载。 从上面介绍可以看岀,在Java程序中确定一个方法需要三个要素。

    50530

    【C++】继承

    基类和派生类对象的赋值转换 首先我们来看这样一个问题: 大家看这里y能赋给x吗? 当然可以的,这个问题其实我们之前的文章里讲过。...这里会发生一个隐式类型转换嘛,会产生一个临时变量,临时变量的值就是y转换为int类型的值,然后再把这个临时变量赋给x。 另外临时变量具有常性,如果你赋给引用的话还得加const嘛。...2.1 派生类对象赋值给基类对象 那大家看这样可以吗? 还是我们上面写的两个类,Student继承了Person,那子类的对象可以赋值给父类的对象吗? 是可以的。...大家可以还按我们上面说的那种切片的方式去理解 显然是不行啊,因为子类的成员有可能比父类多啊,你把父类赋给子类,是不是有可能不够用啊。 3....之前我们说过,在一个工程里面可以有同名的变量或函数等,只要它们不在同一个域就可以,因为在同一个域的话就会出现命名冲突的问题。 那在子类和父类中可以吗?

    14610

    Java基础重构-面向对象

    也可以将 this 作为返回值,如果某个方法把 this 作为返回值,则可以多次连续调用同一个方法,从而使得代码更加简洁。但是,这种把 this作为返回值的方法可能造成实际意义上的模糊。...Java 引用变量有两个类型,一个是编译型类型,一个是运行时类型,编译时类型由声明该变量时使用的类型决定,运行时类型由实际赋给变量的对象决定。如果编译时类型和运行时类型不一样。就可能出现所谓的多态。...当把一个子了i对象那个直接赋给父类引用变量时,运行时调用该引用变量的方法是,其方法行为总是表现出子类方法的行为特征,而不是父类方法的行为特征。 instanceof 运算符是干什么的?...自动装箱,就是可以把一个基本类型变量直接赋给对应包装类变量,或者赋给Object变量,(Object是所有类的父类,自诶对象可以直接符给父类变量),自动拆箱则则与之相反,允许直接·把包装类对象直接赋给一个对应的基本类型变量...但对于引用类型变量,只要他们指向同一个对象, 判断才会返回true,== 不可用与比较类型上没有父子·关系的两个对象。

    65530

    详解Java中的clone方法:原型模式

    ,也就是说创建了新的对象, 而不是把原对象的地址赋给了一个新的引用变量: com.pansoft.zhangjg.testclone.Person@2f9ee1ac com.pansoft.zhangjg.testclone.Person...对象中的name指向的字符串对象创建一个新的相同的字符串对象,将这个新字符串对象的引用赋给新拷贝的Person对象的 name字段。...如果两个Person对象的name的地址值相同, 说明两个对象的name都指向同一个String对象, 也就是浅拷贝, 而如果两个对象的name的地址值不同, 那么就说明指向不同的String对象,...那么,对Body对象来说,算是这算是深拷贝吗?...但是,这对于两个Head对象来说,他们指向了同一个Face对象,这 就说明,两个Body对象还是有一定的联系,并没有完全的独立。这应该说是一种不彻底的深拷贝。

    74910

    .NET面试题解析(01)-值类型与引用类型

    对象的传递 将值类型的变量赋值给另一个变量(或者作为参数传递),会执行一次值复制。...将引用类型的变量赋值给另一个引用类型的变量,它复制的值是引用对象的内存地址,因此赋值后就会多个变量指向同一个引用对象实例。...值类型包括简单类型、结构体类型和枚举类型,引用类型包括自定义类、数组、接口、委托等。 1、赋值方式:将一个值类型变量赋给另一个值类型变量时,将复制包含的值。...3、null:与引用类型不同,值类型不可能包含 null 值。然而,可空类型允许将 null 赋给值类型(他其实只是一种语法形式,在clr底层做了特殊处理)。...“结构”对象可能分配在堆上吗?什么情况下会发生,有什么需要注意的吗?

    81420

    详解Java中的clone方法 -- 原型模式

    ,也就是说创建了新的对象, 而不是把原对象的地址赋给了一个新的引用变量:  com.pansoft.zhangjg.testclone.Person@2f9ee1ac com.pansoft.zhangjg.testclone.Person...但是name是String类型的, 它只是一个引用, 指向一个真正的String对象,那么对它的拷贝有两种方式: 直接将源对象中的name的引用值拷贝给新对象的name字段, 或者是根据原Person对象中的...name指向的字符串对象创建一个新的相同的字符串对象,将这个新字符串对象的引用赋给新拷贝的Person对象的name字段。...如果两个Person对象的name的地址值相同, 说明两个对象的name都指向同一个String对象, 也就是浅拷贝, 而如果两个对象的name的地址值不同, 那么就说明指向不同的String对象, 也就是在拷贝...但是,这对于两个Head对象来说,他们指向了同一个Face对象,这就说明,两个Body对象还是有一定的联系,并没有完全的独立。这应该说是一种不彻底的深拷贝。

    40600

    大数据必学Java基础(十六):赋值运算符

    ​赋值运算符一、=的作用将等号右侧的值赋给等号左侧int age = 19;int age = 10+3+8;二、练习public class TestOpe06{ public static...,下面用Java来演示一下1、利用第三个变量交换数值,简单的方法class TestEV//创建一个类{ public static void main(String[]args) {...int x =5,y=10; //定义两个变量 int temp = x;    //定义第三临时变量temp并提取x值 x = y;        //把y的值赋给x...y = temp;      //然后把临时变量temp值赋给y System.out.println("x="+x+"y="+y); }}2、可以用两个数求和然后相减的方式进行数据交换...("x="+x+"y="+y); }}4、最为简单的,在打印输出的时候直接交换变量 class TestEV//创建一个类{ public static void main(String[]

    25551

    Java并发关键字-final

    针对这两种类型的变量赋初值的时机是不同的,类变量可以在声明变量的时候直接赋初值或者在静态代码块中给类变量赋初值。而实例变量可以在声明变量的时候给实例变量赋初值,在非静态初始化块中以及构造器中赋初值。...类变量有两个时机赋初值,而实例变量则可以有三个时机赋初值。当final变量未初始化时系统不会进行隐式初始化,会出现报错。这样说起来还是比较抽象,下面用具体的代码来演示。...(代码涵盖了final修饰变量所有的可能情况,耐心看下去会有收获的) ? 看上面的图片已经将每种情况整理出来了,这里用截图的方式也是觉得在IDE出现红色出错的标记更能清晰的说明情况。...现在我们来将这几种情况归纳整理一下: 类变量:必须要在静态初始化块中指定初始值或者声明该类变量时指定初始值,而且只能在这两个地方之一进行指定; 实例变量:必要要在非静态初始化块,声明该实例变量或者在构造器中指定初始值...由于一个final域的引用对象的成员域写入不能与随后将这个被构造出来的对象赋给引用变量重排序,因此2和3不能重排序。

    70730

    实现两数字(字符、字符串等等)时,交换时为什么要创建临时变量【学习C语言必会】

    正处于C语言初阶学习的朋友可能脑海里经常有一个困惑:为什么实现交换时要创建临时变量呢?直接相互赋值不可以吗?为什么要多出来这么一个步骤呢?...今天我就来为大家解答这个问题: 在C语言中,实现两个数字交换的常见方法是创建一个临时变量来存储其中一个数字,然后将这两个数字互相赋值。...例如,如果我们有两个数字a和b,它们的值分别为3和5,如果我们直接将a的值赋给b,b的值赋给a,那么a和b的值都会变成3,交换失败。...而如果我们使用临时变量,将a的值存储在临时变量中,然后将b的值赋给a,最后将临时变量的值赋给b,就可以成功地完成交换。...正解: 其中,临时变量的名称可任意取,但是我们一般取名为temp,这取自英文单词暂时的(temporary)这样取名也便于区分。

    7510

    C++|智能指针模板类

    string对象,这显然是不能被接受的,因为程序试图删除同一个对象两次,分别发生在ps和vication过期时,要解决这个问题,可以考虑下面几种方案: 定义赋值运算符,使之指向深复制,这样两个指针将指向不同的对象...如果程序要使用多个指针指向同一个对象,应该选择shared_ptr指针。 很多STL容器中的算法都支持复制和赋值操作,这些操作可以用于shared_ptr,但不能用其他两个。...如果程序不需要使用多个指向同一个对象的指针,则可以使用unique_ptr。 结合上面的警告内容理解。 番外:将一个智能指针赋给另外一个一定会引起错误吗? 批话少说,代码掏出来看看!...总结一下就是: 如果程序试图将一个unique_ptr赋给另外一个时,如果源unique_ptr是一个临时右值,编译器允许这样的操作,相反,如果这个unique_ptr会存在一定的时间,那么这将会被编译器禁止...如果实在需要这种赋值操作,安全的重用这种指针,可以给他赋新值,这就引出了另外一个标准函数库中的函数:std::move()通过它,你可以实现将unique_ptr赋值给另外一个。

    63810

    Java构造方法(超详细!)

    构造方法是一个比较特殊的方法,通过构造方法可以完成对象的创建,以及实例变量的初始化。 换句话说:构造方法是用来创建对象,并且同时给对象的属性赋值。...注意:实例变量没有手动赋值的时候,系统会赋默认值。 2.构造方法怎么定义,语法是什么?...当一个类中手动的提供了构造方法,那么系统将不再默认提供无参数构造方法。 建议将无参数构造方法手动的写出来,这样一定不会出问题。 6.实例变量在类加载是初始化吗?实例变量在什么时候初始化?...不是,实例变量是在构造方法执行的过程中完成初始化的,完成赋值的。 7.构造方法支持方法重载吗? 构造方法是支持方法重载的。 在一个类当中构造方法可以有多个。 并且所有的构造方法名字都是一样的。...方法重载特点: 在同一个类中,方法名相同,参数列表不同。 重点 对于实例变量来说,只要你在构造方法中没有手动给它赋值,统一都会默认赋值。默认赋系统值。

    60430

    【C++】详解多态的底层原理

    回忆一下我们之前讲的内容,我们说指针和引用的切片是不是可以理解成: 子类对象的地址赋给父类的指针,就可以认为是把子类对象中切出来的父类的那一部分的地址赋给父类的指针。...子类对象赋给父类对象的引用就可以认为是给子类对象中切出来的父类的那一部分起一个别名。...那如果是子类对象赋给父类对象呢? 我们还可以按照切片理解,但是我们是不是说了把子类对象赋给父类对象其实是调用父类的拷贝构造完成的。 那这里就涉及一个问题:子类对象的虚表会不会拷贝过去?...那要告诉大家的是:将子类对象赋给父类对象时,并不会拷贝虚函数表,父类的虚表是不会变的,也因此父类的对象不能实现多态。 因为如果拷贝的话是不合理的,不敢随便拷这个。...但是,大家有没有发现一个问题:我们对func1重写了,但它在两个虚表里覆盖的地址不一样!!! 这是怎么回事呢? 我们来看一段代码 大家看,这两个函数调用调的是同一个吗?

    68210

    美团面试题:String s = new String(111) 会创建几个对象?

    222 这不对呀,不是不变吗?怎么变了呢? 其实在 JVM 的运行中,会单独给一块地分给 String。...由于 String 字符串的不可变性我们可以十分肯定常量池中一定不存在两个相同的字符串。 这里先去 JVM 给常量池里找,找到了就不用创建对象了,直接把对象的引用地址赋给 a。...找不到会重新创建一个对象,然后把对象的引用地址赋给 a。同理 a="222"; 也是先找,找不到就重新创建一个对象,然后把对象的引用地址赋给 a。...对象内容是一样的 System.out.println(a.equals(b)); } } 输出 true true false true 第一个输出 true,说明 a 和 a1 两个变量保存的引用地址是同一个...所以 String b = new String("111"); 就是创建一个对象然后把对象引用地址赋给变量 b。

    58000

    java——面向对象

    方法重载: 定义: 同一个类中的方法,方法名称相同,参数列表不同,我们称之为方法重载 注意事项: 不能根据方法的返回值来区分方法是否重载,因为java调用方法时可以忽略方法的返回值,假如现在同一个类中有两个方法...,int f(),void f(),这两个方法方法名称相同,参数列表相同,只有返回值不同,当你调用f()时,你知道调用的是哪个方法吗?...实例变量:没有用static关键字修饰的变量,只能通过类的实例来访问 局部变量:指的是在方法中定义的变量 多态: Java引用变量有两个类型:一个是编译时类型,一个是运行时类型。...编译时类型由声明该变量时使用的类型决定,运行时类型由实际赋给该变量的对象决定。...,则调用父类的base方法,接着执行bs.test(),由于之类重写了父类的test方法,所以此时执行的是之类的test方法,大家可能会有疑问,为什么bs.book的值不是java编程思想,而是6呢?

    76720

    Java中的String为什么是不可变的?

    Java和C++的一个不同点是, 在Java中不可能直接操作对象本身,所有的对象都由一个引用指向,必须通过这个引用才能访问对象本身,包括获取成员变量的值,改变对象的成员变量,调用对象的方法等。...JDK1.7中String类的主要成员变量就剩下了两个: public final class String implements java.io.Serializable, Comparable...再次说明, a只是一个引用, 不是真正的字符串对象,在调用a.replace(‘A’, ‘a’)时, 方法内部创建了一个新的String对象,并把这个心的对象重新赋给了引用a。...value是final修饰的,也就是说final不能再指向其他数组对象,那么我能改变value指向的数组吗? 比如将数组中的某个位置上的字符变为下划线“_”。...下面是实例代码: public static void testReflection() throws Exception { //创建字符串"Hello World", 并赋给引用s String

    70530

    python055_python编程_容易出现的问题_函数名的重新赋值_print_int

    常见错误 int 是 整数类 可以完成 类型转化 b = int("6") c = int(7.1) int类型 能用来转化变量类型 int 可以 被声明成 变量吗?...重新赋值后 int = 5 a = int(6) 将 5 赋给 变量 int int 一旦被 重新 赋值 就 不能 完成类型转化 了 和 print 一样 观察 重启 游乐场 观察 类型...max max 也是 内建的函数 builtin-function 和 print一样 将 1 赋给 max 之后 再调用 max max = 1 max(1, 2) TypeError...max 不再是 内建的函数 而是整数 无法调用了 这max 能 在本地 看到 吗?...总结 这次 了解到 已有的函数名、类名、模块名 不适合 覆盖了 赋新值 会 失去原有功能 比如 max 如果我 就想 让 max 当 变量名 表示 最大值 想让 max函数 可以继续被调用

    6410

    STRING对象不可变的原理

    内存结构如下图所示: Java和C++的一个不同点是, 在Java中不可能直接操作对象本身,所有的对象都由一个引用指向,必须通过这个引用才能访问对象本身,包括获取成员变量的值,改变对象的成员变量,调用对象的方法等...JDK1.7中String类的主要成员变量就剩下了两个: public final class String implements java.io.Serializable...再次说明, a只是一个引用, 不是真正的字符串对象,在调用a.replace('A', 'a')时, 方法内部创建了一个新的String对象,并把这个心的对象重新赋给了引用a。...value是final修饰的,也就是说final不能再指向其他数组对象,那么我能改变value指向的数组吗?比如将数组中的某个位置上的字符变为下划线“_”。...下面是实例代码: public static void testReflection() throws Exception { //创建字符串"Hello World", 并赋给引用s

    72240
    领券