诚实的码农 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 fpga自动售货机数码管(相关搜索:数字时钟)
  • ¥20 Python安装cvxpy库出问题
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥15 python天天向上类似问题,但没有清零
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 C#调用python代码(python带有库)
  • ¥15 活动选择题。最多可以参加几个项目?
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题