java 类之间转换,java中类对象之间的类型转换

类似于基本数据类型之间的强制类型转换。

存在继承关系的父类对象和子类对象之间也可以

在一定条件之下相互转换。

这种转换需要遵守以下原则:

1.子类对象可以被视为是其父类的一个对象

2.父类对象不能被当作是某一个子类的对象。

3.如果一个方法的形式参数定义的是父类对象,那么调用这个方法时,可以使用子类对象作为实际参数。

4.如果父类对象与引用指向的实际是一个子类对象,那么这个父类对象的引用可以用强制类型转化成子类对象的引用。

在java中,做强制类型转换时

父类与子类对象之间,同一父类的兄弟类对象之间如何强制转换?

例如:

class a

{ ... }

class b extends a

{...}

class c extends a

{...}

....

a a1=new a();

b b1=new b();

c c1=new c();

a1=b1    //合法

b1=a1    //不合法(理论上是合法的?)

b1=(b)c1//不合法(理论上是合法的?)

解答:

说明以下几点:

1.类型转换必须在继承层次类转换,即超类与子类之间.2.兄弟类之间不存在继承,因此也不存在类型转换.

对类进行类型转换的一般原则如下:

1.总是可以“父=子”赋值。此时不需要类型转换。因为特定的子类也属于它的一般父类。也可以执行跨级跨层次的赋值,即父类可以式更高级别的父类。

2.可以执行类型转换“子=(子)父”,但需要运行时进行检查。如果父类变量引用的是正确的子类型,赋值将执行。如果父类变量引用的是不相关的子类型,将会生成class castException异常。

3.决不能在不相关的任何类之间执行类的赋值或者类型转换。

如果把搂主的a1当作动物,把b1当作狗,c1当作猫

a1=b1    //合法———也就是说狗是动物,当然成立

b1=a1    //不合法(理论上是合法的?)———就是说动物是狗,这当然不对了

b1=(b)c1//不合法(理论上是合法的?)———就是说狗是猫,这当然也不对了

对象在继承关系中的改变

对象的赋值是地址标识的传递,即两个对象名共同使用同一段内存地址。在Java中,对父类与子类对象之间的赋值作了如下规定:

1、子类对象名可以赋值给父类对象名;但父类对象名不可以赋值给子类对象名。

即:父类对象名=子类对象名;

2、如果一个父类对象名已经被子类对象名所赋值,那可以将父类对象名经强制转换赋值给子类对象名。

即:子类对象名=(子类类名)父类对象名;

常用的一种形式:方法中形参用父类型,实参用子类的对象名.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/360533.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

重载和重写以及重写的权限问题

简单说重载是发生在一个类中 重写是发生在子父类中的继承情况中 重载Overloading 方法重载是让类以统一的方式处理不同类型数据的一种手段。具有同名函数同时存在,具有不同参数类型/个数。重载overloading是一个类中多态兴的一种表现。 java的方法重载,就…

《图解HTTP》第1章 了解Web及网络基础

《图解HTTP》第1章 了解Web及网络基础 1. 使用 HTTP 协议访问 Web1.1 网络基础 TCP/IP1.2 TCP/IP 协议族1.2.1 TCP/IP 的分层管理 1. 使用 HTTP 协议访问 Web Web 使用一种名为 HTTP(HyperText Transfer Protocol,超文本传输协议) 的协议作为…

JBoss Forge NetBeans集成–入门

JBoss Forge是构建基于Maven的Java EE项目的最快方法。 因此,它已经具有了令人敬畏的功能,使您作为开发人员的生活更加轻松。 在大多数情况下,使用Forge的人们可能会对创建Web应用程序感兴趣。 有很多入门Forge基础的方法。 您可以查看quick…

java版本的getorcreate,getOrCreate for java-rest-api neo4j失敗

我有一個簡單的關係測試,我試圖運行使用Rest API創建一個獨特的節點(java-rest-binding)https://github.com/neo4j/java-rest-binding但不幸的是我被困在某些東西上,這裏是細節:(非唯一的節點和關係工作完全正常,與這一點&#xf…

Nifty JUnit:在方法和类级别上使用规则

如Nifty JUnit:使用临时文件一文中所示 ,可以在JUnit测试中使用Rule ,这是方法级别的规则。 在此示例中,我想显示ClassRule用于类级别规则的变体。 方法规则 Rule在测试类的每个测试方法(就像Before )之前…

SQL语法的重要知识点总结

好几年没写SQL语句了。现在到了新的team,需要用到数据库。作为QA的话时常需要使用客户端工具连接到数据库中找寻或修改数据。这么长时间没使用,一些SQL的使用技巧都忘得差不多了。晚上看了一些资料,花了1个多小时又捡起了曾经的知识。现在总结…

java语法定制混淆,由撇号混淆的textpad语法高亮显示

我想知道在textpad的语法文件中放置什么来修复问题,例如,在html文件中,你正在写一个段落,而撇号会创建语法高亮,直到下一个aspostrophe .例如:Hi, I m an example.lol text here placeholder lorem ipsum I…

您需要了解的有关默认方法的所有信息

因此,默认方法是……昨天的新闻,对不对? 是的,但是使用一年后,积累了很多事实,我想将这些事实收集在一个地方,供刚开始使用它们的开发人员使用。 甚至有经验的人都可以找到他们不知道的一两个细…

RAC+ASM在单机上恢复的过程

IT168技术文档】网上也有类似的例子,但不尽详细,也没多花心思解释流程及原因,可能对初试者不太解惑。有感于此,故认真整理了恢复步骤即操作流程,望有助于同行朋友。 环境:正式环境是IBM4IBM5(RAC)&#xf…

php event_base_new,php event拓展基本使用

php event拓展基本使用2019-02-04 22:02:28(527)1. 确定io复用类型(select/poll/epoll)php$cfg new EventConfig();$cfg->avoidMethod("select");$cfg->avoidMethod("epoll");$base new EventBase($cfg);$sig Event::signal($base, SIGTERM, func…

OSGi服务测试助手:ServiceRegistrationRule

OSGi服务测试可以有效避免与悬挂的服务引用有关的问题。 就像我在写简单服务贡献验证中所承诺的那样,这次我引入了一个JUnit规则 ,该规则有助于测试组件之间的交互。 OSGi服务测试组件交互 假设我们有一个服务,该服务通知根据whiteboard-pat…

php 在函数里打开链接,JavaScript中打开链接的几种方法介绍

如何使用JavaScript打开链接?本篇文章我们就来看看使用JavaScript打开链接的几种方法介绍。我们先来看一段代码使用Javascript实现打开链接,需要在location.href中替换要打开的链接的URL。location.href http://www.php.cn/blog.html;通过上述代码我们可…

三代基因组测序技术原理简介

考虑到cnblog不适合基因组领域这种类型的文章, 最终,我自己开通了公众号:碱基矿工,欢迎感兴趣的同学关注! 也可以关注我的知乎:https://www.zhihu.com/people/yellowtree/activities 2018年1月修改&#x…

Java并发教程–锁定:显式锁定

1.简介 在许多情况下,使用隐式锁定就足够了。 有时,我们将需要更复杂的功能。 在这种情况下, java.util.concurrent.locks包为我们提供了锁定对象。 当涉及到内存同步时,这些锁的内部机制与隐式锁相同。 区别在于显式锁提供了其他…

POJ 1422 Air Raid (最小路径覆盖)

题意 给定一个有向图&#xff0c;在这个图上的某些点上放伞兵&#xff0c;可以使伞兵可以走到图上所有的点。且每个点只被一个伞兵走一次。问至少放多少伞兵。 思路 裸的最小路径覆盖。 最小路径覆盖 【路径覆盖】在一个有向图G(V, E<u,v>)中&#xff0c;路径覆盖就是在图…

自编码网络粒子群matlab,粒子群算法优化BP

这是数据1999 1611 1746 1277 753 323 229 7.10561325 1064 1414 1026 430 191 153 24.54521125 839 1197 857 301 168 139 …

在非托管对象中使用Spring托管Bean

即使我们想使用现有的最佳和最新技术&#xff0c;我们也必须处理遗留代码。 想象一下&#xff0c;新代码是用Spring框架的最新技术编写的&#xff0c;而旧代码根本不是用Spring编写的。 然后在非托管Spring对象中使用Spring托管Bean是我们必须处理的模式之一。 遗留代码具有非托…

lda php,主题模型︱几款新主题模型——SentenceLDA、CopulaLDA、TWE简析与实现

[导读]百度最近开源了一个新的关于主题模型的项目。文档主题推断工具、语义匹配计算工具以及基于工业级语料训练的三种主题模型&#xff1a;LatentDirichlet Allocation(LDA)、SentenceLDA 和Topical Word Embedding(TWE)。一、Familia简介帮Familia&#xff0c;打个小广告~ F…

Spring项目中的Netflix Archaius属性

Archaius基础 Netflix Archaius是用于管理应用程序配置的库。 考虑一个属性文件“ sample.properties”&#xff0c;其中包含一个名为“ myprop”的属性&#xff1a; mypropmyprop_value_default这是使用Archaius加载文件的方式&#xff1a; ConfigurationManager.loadCascad…

linux进程之间传递句柄

参考网上的实现&#xff0c;进行了一点改进&#xff0c;本来想用FIFO实现的&#xff0c;后来发现不行&#xff0c;必须使用系统的sendmsg函数&#xff0c;代码格式有点乱&#xff0c;不过功能可以实现&#xff0c;改天有空整理一下~~ 讲究看哈~ #include <sys/types.h>#i…