class Animal { public int get (int n) { return n; } } class Dog extends Animal { public int get (int n) { return n+super. get (n); } } class Cat extends Animal { public int get (int n) { return n*super. get (n); } } public class E { public static void main (String args []) { Animal animal = new Dog(); int m = animal. get (10); animal = new Cat (); int n = animal. get (10); System. out. printf (”%d:%d”,m,n); } }详细解读该段代码
时间: 2024-03-11 12:46:25 浏览: 19
这段代码定义了一个Animal类及其两个子类Dog和Cat。Animal类中有一个get方法,返回传入的n值。子类Dog和Cat分别继承了Animal类,并且重写了get方法。Dog类中的get方法返回传入的n值加上调用父类Animal的get方法返回的n值,即n+super.get(n)。Cat类中的get方法返回传入的n值乘以调用父类Animal的get方法返回的n值,即n*super.get(n)。
在主方法中,首先创建一个Animal类型的对象animal,其实际类型是Dog。调用animal的get方法,会执行Dog类中重写的get方法,返回10+10=20,将值赋给变量m。然后重新创建一个Animal类型的对象animal,其实际类型是Cat。调用animal的get方法,会执行Cat类中重写的get方法,返回10*10=100,将值赋给变量n。最后,使用printf方法输出m和n的值,输出结果为“20:100”。
相关问题
class Animal{ public static int get (int n) { return n+10; } public int see (int n) { return n+10; } } class Dog extends Animal { public static int get (int n) { return n*10; } public int see (int n) { return n*10; } } public class E { public static void main (String args []) { Animal animal = null; animal = new Dog (); System. out. printf (“%d:%d”, animal. get (10), animal. see (10)); } }详细解读这段代码
这段代码定义了一个Animal类,其中包含一个静态方法get和一个实例方法see。还定义了一个Dog类,它继承了Animal类,并且重写了get和see方法。最后定义了一个E类,并在其main方法中创建了一个Dog对象,并将其赋值给Animal类型的变量animal。然后调用animal对象的get和see方法,并输出结果。
在Animal类中,静态方法get返回传入参数n加上10的结果。实例方法see也返回传入参数n加上10的结果。
在Dog类中,静态方法get返回传入参数n乘以10的结果。实例方法see也返回传入参数n乘以10的结果。
在E类中,创建了一个Dog对象,并将其赋值给Animal类型的变量animal。虽然animal变量的静态类型是Animal,但实际上它指向的是一个Dog对象。因此,animal调用get方法时,会调用Dog类的get方法,返回传入参数n乘以10的结果;调用see方法时,也会调用Dog类的see方法,返回传入参数n乘以10的结果。最后输出结果20:100。
对于下列代码,叙述正确的是哪个?(()classAnimalf int m =100;int get(){return m;}} class Dog extendsAnimal{intm=2:} publicclass E{public static void main(Stringargs[]){Animaldog=new Dog();Systemoutprintf("%d",dogget());}}A.代码有编译错误B运行输出2C.运行输出100D.无编译错误,但发生运行NullPointerException异常
根据给出的代码,叙述正确的是C.运行输出100。
首先,我们知道 `Dog` 类继承了 `Animal` 类,并且 `Animal` 类中定义了一个实例变量 `m`,并且有一个 `get()` 方法返回 `m` 的值。
在 `Dog` 类中,定义了一个实例变量 `m`,并且初始化为 2。但是由于没有重写 `get()` 方法,所以在调用 `dog.get()` 时,会调用父类 `Animal` 类中的 `get()` 方法,返回 `m` 的值为 100。
因此,代码运行输出为 100,选项 C 正确。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![java](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)