概述
类型转换(向下强制)
1. 向上转型比较安全
int i =1;
double result = i ;
Employee e = new Manager();
2. 向下转型不安全(因为父类中不一定有子类的一些属性和方法),需要强制转换
double d=4.9999999;
int result = (int) d ;
Manager m = (Manager)new Employee();//(另需要是由子类做底层构建)
double
float
int
Employee
Manager
Boss
另: int a = 5;
float b= (float) 5.0;
long c = 5L;
//5.0是double型,其它两项必须转型才有匹配的方法test(double a ,double b,double c)可以用
test(5,5.0,5L) //-->1
// 如果有显示定义类型就按照类型判断
test (a,b,c) //-->2
void test(double a ,double b,double c){
System.out.println("1---"+a+"=="+b+"=="+c); //1---5.0==5.0==5.0
}
void test(int a ,float b,long c){
System.out.println("2---"+a+"=="+b+"=="+c); //2--5==5.0==5
}
5.0 自动转换到double
3.对象引用的类型决定了哪个变量可以访问,底层对象的类型决定了哪个方法可以调用(属性=方法)
class Acc{
public static void main(String[] args){
First s = new Second(); //First s = new First(); ClassCaseException
Second s2 = (Second)s;
System.out.println("s.var="+s.var); // s.var=1
System.out.println("s.method()="+s.method()); //s.method()=2
System.out.println("s2.var="+s2.var); // s2.var=1
System.out.println("s2.method()="+s2.method()); //s2.method()=2
}
}
class First{
int var =1;
int method(){
return var;
}
}
class Second extends First{
int var = 2;
int method(){
return var;
}
}
最后
以上就是苗条钢笔为你收集整理的类型转换(向下强制)的全部内容,希望文章能够帮你解决类型转换(向下强制)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复