public class TestDemo{ public static void main(String[]args){ Derive derive =new Derive(20); Derive derive1=new Derive(); } } class Base{ private int i; public Base(){ i=10; System.out.println("Base():i="+i); } public Base (int i){ this.i=i; System.out.println("Base(inti):i="+i); } } class Derive extends Base{ private int j; public Derive(){ super(); j=10; System.out.println("Derive():j="+j); } public Derive(int j){ super(20); this.j=j; System.out.println("Derive(intj):j="+j); } }
时间: 2024-04-27 11:23:07 浏览: 20
这段代码是 Java 语言中的继承示例。其中 Base 类有两个构造方法,一个无参构造方法和一个有参构造方法,而 Derive 类继承了 Base 类,并且也有两个构造方法,一个无参构造方法和一个有参构造方法。在无参构造方法中,使用 super() 调用了父类的无参构造方法,而在有参构造方法中使用 super(20) 调用了父类的有参构造方法,并且使用 this.j=j; 初始化了 j 的值。在 TestDemo 类中,创建了两个 Derive 对象,一个是使用有参构造方法创建的,另一个是使用无参构造方法创建的。
相关问题
public class TestDemo { public static void main(String[] args) { A.B ab = new C();//向上转型 ab.print(); } }
这是一个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的父类或接口。
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 对象写入文件中了。