给出下列【代码】注释标注的代码的输出结果。 class Animal { int m = 100; public int setM(){ return m; } } class Dog extends Animal{ int m = 6; public int setM(){ return m; } } public class E { public static void main(String args[]){ Animal dog = new Dog(); System.out.printf("%d:%d",dog.setM(),dog.m); //【代码】 } }
时间: 2024-04-28 22:26:03 浏览: 12
输出结果为:6:100。
解析:Animal类有一个变量m和一个返回变量m的方法setM(),Dog类继承了Animal类,并且重写了setM()方法。在main方法中,创建了一个Animal类型的变量dog,并且将其赋值为一个Dog类型的实例。由于Dog类重写了setM()方法,所以当调用dog.setM()时,实际上调用的是Dog类中的setM()方法,返回的是Dog类中的变量m的值,即6。而当调用dog.m时,实际上访问的是Animal类中的变量m,即100。所以最终输出结果为6:100。
相关问题
给出下列【代码】注释标注的代码的输出结果。 class Animal{ int m = 100; } class Dog extends Animal { double m; public void setM(){ m = super.m+3.14; } } public class E { public static void main(String args[]){ Dog dog = new Dog(); dog.setM(); System.out.println(dog.m); //【代码】 } }
在上述代码中,输出结果为 `100.0 + 3.14 = 103.14`。
下面是代码的详细解释:
1. 首先,我们定义了一个 `Animal` 类,并声明了一个整型属性 `m`,并将其初始化为 `100`。
2. 接着,我们定义了一个名为 `Dog` 的子类,它继承了 `Animal` 类。在 `Dog` 类中,我们声明了一个双精度浮点型属性 `m`,这个属性将会覆盖父类的同名属性。
3. 在 `Dog` 类中,我们还定义了一个名为 `setM` 的方法,这个方法通过调用 `super.m` 访问了父类中的属性 `m`,并将其值加上了 `3.14`,然后将结果赋值给了 `Dog` 类中的属性 `m`。
4. 最后,在 `main` 方法中,我们创建了一个 `Dog` 的实例 `dog`,然后调用了 `dog` 的 `setM` 方法,将 `dog` 的属性 `m` 的值设为 `100 + 3.14 = 103.14`。最后,我们输出了 `dog` 的属性 `m` 的值,结果为 `103.14`。
出下列【代码】注释标注的代码的输出结果。 class Animal{ int m = 100; } class Dog extends Animal { double m; public void setM(){ m = super.m+3.14; } } public class E { public static void main(String args[]){ Dog dog = new Dog(); dog.setM(); System.out.println(dog.m); //【代码】 } }
输出结果为:103.14。
解析:Animal类中有一个变量m,值为100,Dog类继承了Animal类,并且增加了一个变量m,类型为double。在setM()方法中,调用了super.m,获取了Animal类中的变量m的值,并且加上3.14,赋值给了Dog类中的变量m。在main方法中,创建了一个Dog类型的实例,调用其setM()方法,将Dog类中的变量m的值设为103.14。最后调用System.out.println(dog.m),输出Dog类中的变量m的值,即103.14。