向上转型,向下转型

向上转型,就是将其他类型转对象转为Object类型,向下转型则相反。

例:

 1 public class Test {
 2    private Object b;//设置object类型成员变量
 3    public Object getB(){
 4        return b;
 5    }
 6    public void setB(Object b){
 7        this.b = b;
 8    }
 9    public static void main(String [] args){
10        Test test =   new Test();
11        test.setB(new Boolean(true));//向上转型
12        System.out.println(test.getB());
13        test.setB(new Float(12.3));
14        Float f = (Float)(test.getB());//向下转型
15        System.out.println(f);
16        test.setB(new Float(12.3));
17        Integer f1 = ( Integer)(test.getB());//向下转型,抛出异常
18        System.out.println(f1);
19
20    }
21 }

运行结果:

true
12.3
Exception in thread "main" java.lang.ClassCastException: java.lang.Float cannot be cast to java.lang.Integer
at fanxing.Test.main(Test.java:19)

在上述例子中,Test类中定义了私有的成员变量b,它的类型为Object类型,同时为其定义了相应的set与get方法,将new Boolean(true)对象作为setB()方法参数,由于setB()方法的参数类型为Object,这样就实现了“向上转型”,同时在调用getB()方法的时候,将getB()方法返回的Object对象以相应的类型返回,这就是“向下转型”,问题通常会出现在这里,因为“向上转型”是安全的,而“向下转型”操作时用错了类型,或者没有执行该操作,就会出现异常。

时间: 2024-10-01 01:18:09

向上转型,向下转型的相关文章

“全栈2019”Java第九十章:内部类可以向上或向下转型吗?

难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第九十章:内部类可以向上或向下转型吗? 下一章 "全栈2019"Java第九十一章:内部类具有多态特性吗? 学习小组 加入同步学习小组,共同交流与进步. 方式一:关注头条号Gorhaf,私信"Java学习小组". 方式二:关注公众号Gorhaf,回复"Java学

java上转型和下转型(对象的多态性)

/*上转型和下转型(对象的多态性) *上转型:是子类对象由父类引用,格式:parent p=new son *也就是说,想要上转型的前提必须是有继承关系的两个类. *在调用方法的时候,上转型对象只能调用父类中有的方法,如果调用子类的方法则会报错 *下转型:是父类向下强制转换到子类对象 *前提是该父类对象必须是经过上转型的对象. * *代码示例:*/ 1 abstract class Parent{ 2 abstract void grow(); 3 } 4 class Son extends P

对象向上、向下转型

向上转型(Son-->Father),程序会自动完成 父类 父类对象 = 子类实例 向下转型(Father-->Son),强制类型转换 子类 子类对象 = (子类)父类实例 class Father { public void tell() { System.out.println("Father tell"); } } class Son extends Father { public void tell() { System.out.println("Son

11 向上与向下转型

什么是向上转型:将子类的对象赋值给父类的引用 Student s=new Student(); Person p=s; 什么是向下转型:将父类的对象赋值给子类的引用 Student s1=new Student(); Person p=s1; Student s2=(Student)p;

向上与向下转型

向下转型 在向下转型过程中,分为两种情况: 如果父类引用的对象如果引用的是指向的子类对象,那么在向下转型的过程中是安全的.也就是编译是不会出错误的. 如果父类引用的对象是父类本身,那么在向下转型的过程中是不安全的,编译不会出错,但是运行时会出现java.lang.ClassCastException错误.它可以instanceof来避免出错此类错误. 1 Father fh=new Father(); 2 if(fh instanceof Son) 3 { 4 Son son =(Son)fh;

java 向上,向下转型

在对Java学习的过程中,对于转型这种操作比较迷茫,特总结出了此文.例子参考了<Java编程思想>. 目录 几个同义词 向上转型与向下转型 例一:向上转型,调用指定的父类方法 例二:向上转型,动态绑定 例三:向上转型,静态绑定 例四:向下转型 转型的误区 1.运行信息(RTTI) 2.数组类型 3.Java容器 几个同义词 首先是几组同义词.它们出现在不同的书籍上,这是造成理解混淆的原因之一. 父类/超类/基类 子类/导出类/继承类/派生类 静态绑定/前期绑定 动态绑定/后期绑定/运行时绑定

多态向上转型向下转型

public static void main(String[] args) { Artist artist; artist = new ViolinArtist();//(向上转型)ViolinArtist为子类,父类引用子类对象 损失自己特有的属性和方法 artist.make();//调用的子类的方法 //artist.play(); 会报错, ViolinArtist va = new ViolinArtist(); if(artist instanceof ViolinArtist){

多态 向上,向下转型

注意:自始自终都是子类对象在做着类型的变化向上转型:作用:限制对子类特有方法的访问父类引用   指向 子类对象   //向上转型 ,但是不能访问子类特有的方法       Animal    父类                 cat()子类继承与Animal  Animal  a  =  new  cat();----------------------------------------------向下转型:作用:为了访问子类中的特有方法子类引用   指向 父类(引用)  对象cat s 

Java上转型和下转型

Java 转型问题其实并不复杂,只要记住一句话:父类引用指向子类对象. 什么叫父类引用指向子类对象,且听我慢慢道来. 从2个名词开始说起:向上转型(upcasting) .向下转型(downcasting). 举个例子:有2个类,Father是父类,Son类继承自Father. Father f1 = new Son();   // 这就叫 upcasting (向上转型) // 现在f1引用指向一个Son对象 Son s1 = (Son)f1;   // 这就叫 downcasting (向下

Java基础第9天+final关键字、多态(上转型,下转型)、抽象类(特点,成员特点)、接口(特点,成员特点)

1:final关键字(掌握) (1)是最终的意思,可以修饰类,方法,变量. (2)特点: A:它修饰的类,不能被继承. B:它修饰的方法,不能被重写. C:它修饰的变量,是一个常量. (3)面试相关: A:局部变量 a:基本类型 值不能发生改变 b:引用类型 地址值不能发生改变,但是对象的内容是可以改变的 B:初始化时机 a:只能初始化一次. b:常见的给值 定义的时候.(推荐) 构造方法中. 2:多态(掌握) (1)同一个对象在不同时刻体现出来的不同状态. (2)多态的前提: A:有继承或者实