Java cast_java concat方法

Java cast_java concat方法在说ClassCastException之前,先介绍下引用类型转换;引用类型转换分为向上转型和向下转型两种;向上转型:多态本身是子类类型向父类类型向上转换的过程,这个过程是默认的;当父类引用指向一个子类对象时,便是向上转换;使用格式:父类类型变量名=new子类类型();向下转型:父类类型向子类类型向下转换的过程,这个过程时强制;一个已经向上转型的子类对象,将父类引用转为子类引用,可以使用强…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

在说ClassCastException之前,先介绍下引用类型转换;

引用类型转换分为向上转型和向下转型两种;

向上转型:多态本身是子类类型向父类类型向上转换的过程,这个过程是默认的;当父类引用指向一个子类对象时,便是向上转换;

使用格式:

父类类型 变量名 = new 子类类型();

向下转型:父类类型向子类类型向下转换的过程,这个过程时强制;一个已经向上转型的子类对象,将父类引用转为子类引用,可以使用强制转换的格式,便是向下转换;

使用格式:

子类类型 变量名 = (子类类型) 父类变量名;

转型的目的:

当使用多态方式调用方法时,首先检查父类是否有该方法,如果没有,则编译错误,即父类不能调用子类拥有的,而父类没有的方法;编译都错误,更别说运行,要想调用子类特有的方法,必须做向下转型;

转型示例代码:

定义类:

abstract class Animal {

abstract void eat();

}

class Cat extends Animal {

public void eat() {

System.out.println(“吃鱼”);

}

public void catchMouse() {

System.out.println(“抓老鼠”);

}

}

class Dog extends Animal {

public void eat() {

System.out.println(“吃骨头”);

}

public void watchHouse() {

System.out.println(“看家”);

}

}

测试类:

public class Test {

public static void main(String[] args) {

// 向上转型

Animal a = new Cat();

// 调用的是 Cat 的 eat

a.eat();

// 向下转型

Cat c = (Cat)a;

// 调用的是 Cat 的 catchMouse

c.catchMouse();

// 向下转型

Dog d = (Dog)a;

// ClassCastException异常

d.watchHouse();

}

}

上面这段代码可以编译,但在运行时,会报ClassCastException异常;

ClassCastException: 当试图将对象强制转换为不是实例的子类时,抛出该异常;

上面的测试类中创建了Cat类型对象,运行时不能转换成Dog对象的,这两个类型并没有任何继承关系,不符合类型转换的定义 ,因此会抛出ClassCastException异常;

为了避免ClassCastException的发生,Java提供了 instanceof 关键字,给引用变量做类型的校验,格式如下 :

变量名 instanceof 数据类型

如果变量属于该数据类型,返回true;如果变量不属于该数据类型,返回false;

可以使用instanceof将上面的测试类修改如下:

public class Test {

public static void main(String[] args) {

// 向上转型

Animal a = new Cat();

// 调用的是 Cat 的 eat

a.eat();

// 向下转型

if (a instanceof Cat) {

Cat c = (Cat)a;

c.catchMouse();

} else if (a instanceof Dog) {

Dog d = (Dog)a;

d.watchHouse();

}

}

}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/197326.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Springboot + Openjpa 整合 GBase8s 实践「建议收藏」

    Springboot + Openjpa 整合 GBase8s 实践「建议收藏」本文我们将先来介绍JPA以及OpenJPA之间的关系,然后通过一个手把手的应用案例来讲述Springboot和Openjpa整合GBase8s。那么就让我们开始吧。JPAJPA(JavaPersistenceAPI)作为JavaEE5.0平台标准的ORM规范,将得到所有JavaEE服务器的支持。Sun这次吸取了之前EJB规范惨痛失败的经历,在充分吸收现有ORM框架的基础上,得到了一个易于使用、伸缩性强的ORM规范。从目前的开发社区的反应上看,JPA受到了极大…

    2022年4月28日
    76
  • wifi reaver

    wifi reaverPIN码的格式很简单,八位十进制数,最后一位(第8位)为校验位(可根据前7位算出),验证时先检测前4位,如果一致则反馈一个信息,所以只需1万次就可完全扫描一遍前4位,前4位确定下来的话,只需再试1000次(接下来的3位),校验位可通过前7为算出,就可暴力验证出pin码。所以即时你不知道校验位怎么计算,那你最多尝试10000+1000+10次=11010次就可以获得PIN,从而获得wifi…

    2022年6月4日
    45
  • 精通Web Analytics 2.0 (4) 第二章:选择你的网络分析灵魂伴侣的最佳策略

    精通Web Analytics 2.0 (4) 第二章:选择你的网络分析灵魂伴侣的最佳策略精通WebAnalytics2.0(4)第二章:选择你的网络分析灵魂伴侣的最佳策略   精通WebAnalytics2.0:用户中心科学与在线统计艺术第二章:选择你的网络分析灵魂伴侣的最佳策略  在WebAnalytics2.0的新…

    2022年6月28日
    18
  • html页面调用高德地图,html前端使用高德地图入门教程「建议收藏」

    html页面调用高德地图,html前端使用高德地图入门教程「建议收藏」文章目录开始准备工作注册Key前期页面上的准备插件使用插件使用步骤引入插件定位自定义地图显示位置和缩放级别添加实时路况图层获取定位信息(需要使用插件)浏览器定位IP定位获取当前城市信息覆盖物添加覆盖物获取覆盖物覆盖物的操作图层设置图层获取图层移除图层3D地图未完待续…开始准备工作注册Key如果开发者账号包括Key已经有了,请忽略此步骤首先,注册开发者账号,成为高德开放平台开发者登陆之后,在进入…

    2022年5月21日
    75
  • jq tmpl输出编码html,jQuery tmpl 讲解「建议收藏」

    jq tmpl输出编码html,jQuery tmpl 讲解「建议收藏」2016-07-0114:30陈铭竑1、什么是jQuery-tmpl(1)jQuery的一个类库(2)一个轻量级的前端模板引擎(vue.js也是一种前端模板引擎)(3)可以在模板中实现逻辑运算2、jQuery-tmpl的语法(1)占位:${变量}或{{=变量}}注:=和变量之间一定要有空格(2)循环{{each(i,obj)objs}}…{{/each}}(3)选择{{if条件}}….

    2022年6月16日
    43
  • 2011年全国电子设计大赛综合测试题_全国大学生英语竞赛 C类

    2011年全国电子设计大赛综合测试题_全国大学生英语竞赛 C类系统方案总体设计方案本系统主要由电位器模块、直流减速电机模块、电源模块、电机驱动模块、单片机最小系统班组成。电位器与主控芯片STM32F407ZGT6相连,通过电位的测算实时向MCU发送摆杆的状态,MCU通过控制LM298N电机驱动模块来控制直流减速电机,进而控制摆杆的状态,并使用LCD显示相关参数。方案的比较与选择2.1传感器的选择方案一:采用三轴陀螺仪测量摆杆的偏转角度。当选用三轴陀螺仪检测摆杆的偏转角度时,虽然可以计算摆杆的偏转角度,但是传感器必须要固定在摆杆上,同时需与M…

    2022年8月18日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号