在Java中,关于多态和继承的理解,以下代码的输出结果是什么? ``` class Employee { public static int grade = 5; public void job() { System.out.println("我是一名普通的员工"); } } class Manager extends Employee { public static int grade = 8; @Override public void job() { System.out.println("我是一名经理"); } } public class Example4_12 { public static void main(String[] args) { Employee em = new Manager(); System.out.println(em.grade); em.job(); } } ```

答案解析

在Java中,静态变量和方法属于类,而不是实例。因此,即使em引用的是Manager对象,`em.grade`访问的是Employee类的静态变量grade,输出5。对于非静态方法job(),由于在Manager类中被重写,`em.job()`调用的是Manager类中的job()方法,输出"我是一名经理"。所以,正确答案是C。选项A错误地认为job()方法没有被重写。选项B和D错误地认为grade的值是8,忽略了静态变量的访问规则。
正确答案:C
随机推荐
开始刷题