public class TestDemo { public static void main(String[] args) { A.B ab = new C();//向上转型 ab.print(); } }
时间: 2024-04-13 18:26:23 浏览: 142
这是一个Java程序的示例代码。首先,定义了一个名为TestDemo的公共类。在TestDemo类中,有一个静态的main方法,是程序的入口。在main方法中,创建了一个A.B类型的引用变量ab,并将其实例化为一个C对象。这里涉及到了向上转型,即将子类C的实例赋值给父类A.B的引用变量ab。
接下来,通过ab调用了print方法。由于向上转型后,ab的静态类型是A.B,而非C,所以调用的是A.B中定义的print方法。
请注意,为了使该代码能够正确编译和运行,需要确保A、B和C这三个类都已经被正确定义和实现,并且A.B是C的父类或接口。
相关问题
1、interface Com { int MAX = 100; //【1】 void f();}abstract class Animal implements Com { int MIN ; //【2】}class Dog extends Animal{ void f(){ //【3】 MIN = 10; //【4】 MAX=20; //【5】 } }public class TestDemo{public static void main(String[] arr){Com c=new Dog();System.out.println(c.MAX+”,”+c.MIN); //【6】}}请认真阅读上代码,请问哪几行代码有错?什么原因导致的?
这段代码中有两行有错。
错误1:第2行 Animal类中的MIN变量没有赋初始值,而抽象类中的变量不会自动初始化,因此需要在构造方法中对其进行初始化,或者直接在声明时赋初值。
错误2:第5行 MAX变量是一个常量,接口中定义的常量默认是public static final的,也就是说它是不可改变的,因此在Dog类中不能对MAX进行赋值。
正确的代码应该是这样的:
```
interface Com {
int MAX = 100; // 【1】
void f();
}
abstract class Animal implements Com {
int MIN = 0; // 【2】
}
class Dog extends Animal {
void f() { // 【3】
MIN = 10; // 【4】
}
}
public class TestDemo {
public static void main(String[] arr) {
Com c = new Dog();
System.out.println(c.MAX + "," + ((Dog) c).MIN); // 【6】
}
}
```
这里将Animal类中的MIN变量直接在声明时赋值为0,也可以在Animal类的构造方法中进行初始化。
在输出中需要将c转换为Dog类型,才能访问MIN变量。
public class TestDemo{ public static void main(String[] args) throws Exception{ ObjectOutputStream objectOutputStream = new ObjectOutputStream(new FileOutputStream(new File("test.dat"))); objectOutputStream.writeObject(new A()); objectOutputStream.close(); } } class A{ }简述出现异常的原因,并改正
该代码会抛出 java.io.NotSerializableException 异常,因为类 A 没有实现 Serializable 接口,不能被序列化。要解决这个问题,需要让类 A 实现 Serializable 接口,使用以下代码:
```
import java.io.*;
public class TestDemo {
public static void main(String[] args) throws Exception {
ObjectOutputStream objectOutputStream = new ObjectOutputStream(new FileOutputStream(new File("test.dat")));
objectOutputStream.writeObject(new A());
objectOutputStream.close();
}
}
class A implements Serializable {
}
```
这样就可以成功地将类 A 对象写入文件中了。
阅读全文