诚实的码农 2018-07-23 09:25 采纳率: 100%
浏览 935
已采纳

java面向对象基础语法问题

    public class Base {
        public static final String Foo = "foo";
        public static void main(String[] args) {
            Base b = new Base();
            Sub s = new Sub();
            System.out.println(((Base)s).Foo);
    }

}

    class Sub extends Base{
        public static final String Foo = "bar";
}

System.out.println(((Base)s).Foo);这个语法里面是什么意思?初学者没学过这种语法三个括号
请老手帮忙解答一下这三个括号这种语法什么意思,输出结果我知道是输出父类的FOO;

  • 写回答

5条回答 默认 最新

  • 倾世烟火为你而唱 2018-07-23 09:43
    关注

    System.out.println(((Base)s).Foo);
    java装箱和拆箱
    这段输出可以等同于这样

    Base s1= (Base)s;
    加个括号相当于强转,是一种装箱行为,可以将s转化成Base类型的变量从而调出Base里的属性
    System.out.println(s1.Foo);
    

    关于装箱和拆箱可以这样理解
    Integer是int的封装类
    Integer类型的变量被int类型的变量赋值,是一种装箱行为。(小转大)
    int类型的变量被Integer类型的变量赋值,是一种拆箱行为。(大转小)
    对于初学者建议先百度一下装箱拆箱的详细介绍

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 有赏,i卡绘世画不出
  • ¥15 如何用stata画出文献中常见的安慰剂检验图
  • ¥15 c语言链表结构体数据插入
  • ¥40 使用MATLAB解答线性代数问题
  • ¥15 COCOS的问题COCOS的问题
  • ¥15 FPGA-SRIO初始化失败
  • ¥15 MapReduce实现倒排索引失败
  • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
  • ¥15 找一位技术过硬的游戏pj程序员
  • ¥15 matlab生成电测深三层曲线模型代码