JAVA强制对象类型转换的作用。看例子

class A{
int a;
A(int i){a=i;}
}
class B extends A{
int a,b;
B(int i,int j){
super(i);
b=j;
a=i+j;

}
}
public class AB {
public static void main(String args[]){
A a1=new A(9),a2;
B b=new B(3,5);
a2=a1;
a2=b;
System.out.println(b.a);
b=(B)a2;
System.out.println(b.a);
}
}
转换不转换b都是一样的,那强制对象类型转换的作用是什么呢?一般什么时候会用到?

解释隐式转换,就要区别与显式转换
显式转换是你定义让这个值类型转换成你要用的值类型,例,你定义int i=5,想把他专换成char类型,就用
显式转换(char)i;显式转换是系统跟据程序需要而自动转换的,不需要定义,但并不是所有值类型都可以互相转换,所以有了显式转换。例,int i=5; char j='a'; int n=i+j;因char可以隐式专换为int类型,所以结果n=102
追问:
谢谢,那请问隐式强制类型转换有什么作用或者意义?
举个例子说吧:
比如一个抽象几何对象类Geometric ,圆(Circle circle)和长方形(Rectangle rectangle)都是特殊类型的几何对象(extends Geometric),那么在定义一个圆类对象或者长方形类对象的时候往往是下面这种形式:
Geometric geom1=new Circle(); //隐式强制类型转换为父类对象
// Geometric geom2=new Rectangle();
而在调用的时候往往又会将这个父类对象再显式强制类型转换为子类对象,
然后在调用子类的方法,如:
Circle(geom1).findArea();// 假设圆有一个求其面积的方法 findArea()

这种隐式转换的作用是什么?不懂。。
否则 为什么不直接写成 Circle circle=new Circle();
然后直接调用: circle.findArea()

再问下:通用编程怎么理解? 难不成这就是传说中的多态性?
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-10-28
java是面对对象操作的,对象都有数据类型,比如你定义了一个方法 public void test(int i){...}
使用的时候获得的 i 是一个double 类型值,这时候就要用到强制类型转换了
例如你想随机取得 0到9 这10个数字,Math.random()方法获取一个随机数是double类型的,直接(Math.random()*10)不能将double的变量赋值给 int 类型变量 i,强制转换一下
(int)(Math.random()*10)就变成 int 类型了

java中的强制类型转换
Java中的强制类型转换 在Java中,强制类型转换是一种显式的数据类型转换方式,用于将一种数据类型转换为另一种数据类型。当两种数据类型的值不兼容时,就需要使用强制类型转换。这种转换通常需要程序员手动指定,因为可能会引发数据丢失或变形。详细解释 1. 概念理解:强制类型转换不同于Java中的自动类型转...

java中的强制类型转换
用(String)做强制类型转换和用String.valueOf()区别在于:String 就是直接强制转化成String型的字符串,且有优先级限制,像int i=123;不能String s=(String)i。而String.valueOf()里面的参数转换可以是double、long、char[] 、long等等,没限制,所以String s=String.valueOf(i)。toString()方法返回...

java数据类型强制转换?
} Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。java中各数据类型是如何实现强制类型转换的?转型有两种:向上转型和向下转型(强制转型)两种分别如下:一种是向上转型对于基础数据类型 ,可以自动转型 ,...

Java中的强制类型转换是如何转换的?
java中数据类型的强制转换是通过强制转换语句完成的,强制转换语句的格式为“目标数据类型 变量 = (目标数据类型) 数据;”。下面给出例子:1、定义两个字节数据类型a、b、c,分别赋予1和2和a+b的值,进行加法运算的式子a+b=3,得出的结果“3”将会被编译环境判定为整形数据,把这个整形数据赋值...

java引用类型强制转换, 类型是什么意思,转换的是什么,有什么作用?
引用类型,指的是对象的引用代表的这个对象的类型。例如: A a;这个对象引用类型为A。如果A是父类,B继承于A,有一个对象B b,(A)b就叫强制转换,把b的引用类型转换成A,就可以把b当A实例化的对象使用

java中强转改变了什么?改变的是对象还是引用?
如果强制转换的是基本类型,那改变的是数据本身;如果是对象,那么就是引用。可以看下面的例子:public class Test extends TT{public void f(){System.out.println("f()");}public static void main(String[] args){Test test=new Test();TT tt=(TT)test;tt.f(); \/\/这句编译通不过test.f...

谁能给我讲讲JAVA中的强制造型啊?最好以代码形式讲下,加下注释,谢谢喔...
分为两种:一种是基础数据类型的强制转型,另一种是引用类型的转型。 基础数据的转型:表数范围小的自动向表数范围大的转型,也叫做向上转型。表数范围大的向表数范围小的转型则需要强制类型转换。例:1、java中的整数默认为int类型。但是我们可以这样写: double a = 10; \/\/自动向上转型, ...

java中如何将父类子类对象强制转换 为父类对象,这么做有什么意义?在实...
这样做是多态的一种体现。如果有很多子类。son1 son2 son3 等等 这样做可以为工厂模式作铺垫 可以写出很漂亮的代码 如果所有的子类放到一个ArrayList sonList 里边,每一个son都做一些事情 那么做的时候可以采用这种方式 for(int i=0;i<sonList.size();i++){ Father fff=(Father)sonList.get(i...

java 为什么类能够强制转换?类的存储形式是什么样的?强制转换是怎么个转...
1、并不是所有的类都可以强制转换的,比如你将String a ="这是中文"; 这个a强制转换不了int 2、类的存储简单说最终都是以文件的形式存储在硬盘或者内存上的,具体的形式这个不重要 3、我们看1;String a ="这是中文";String b = "10"; 这个时候a不可以转换成int,b是可以转换的。比如我们...

Java中强制类型转换问题
1.由于a,b是int型而h是float型变量,a\/b的结果也就是float型,假如想要进行相互赋值,就必须先把他们统一成同一类型的变量。2.这里的“h=(float)a\/b”是指:将整形变量a除以整形变量b的结果强制转化为float型,并将这个值赋给h,并不是申明,申明在前面已经有过了,不需要重复申明。强制转换...

相似回答