类型转换(向下强制)

类型转换(向下强制)

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;  
 } 
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值