1.根据要求完成类A和类B的定义 已知接口A有唯一的抽象方法void a (),线程类B是接口A的实现类,要求B中的a(实现输出"这是第16周”,同时在构造B的实例时指定线程B的名字为"thread-B”,并启动线程B,在run ()中完成a () 的调用,即最后输出:thread-B 这是第16周 2.已知类A中有方法fn () 执行在当前目录下创建文件"1.txt" ,要求在类B的m ()中创建A的实例a并调用fn, 并在此处利用try、catch完成异常处理(即不是在类A里try catch),在main0中创建B的对象并调用m () ,根据上述要求完成类A和类B的定义,要求 书写规范,否则即使正确也会扣分
时间: 2024-02-20 11:57:22 浏览: 27
以下是类A和类B的定义,满足题目要求:
类A的定义:
```java
public abstract class A {
public abstract void a();
public void fn() {
try {
File file = new File("1.txt");
if (file.createNewFile()) {
System.out.println("文件创建成功!");
} else {
System.out.println("文件已存在!");
}
} catch (IOException e) {
System.out.println("创建文件失败:" + e.getMessage());
}
}
}
```
类B的定义:
```java
public class B extends A implements Runnable {
private String name;
public B(String name) {
this.name = name;
Thread thread = new Thread(this);
thread.start();
}
@Override
public void run() {
a();
}
@Override
public void a() {
System.out.println(name + " 这是第16周");
}
public void m() {
A a = new A() {};
a.fn();
}
}
```
在类A中定义了方法 fn(),用于在当前目录下创建文件 "1.txt",并对创建过程进行异常处理。在类B中继承了类A,并实现了接口 Runnable,重写了接口A中的抽象方法 a(),在构造函数中启动了一个新线程,并在其中调用了 a() 方法输出指定的字符串。在 m() 方法中创建了 A 的实例并调用了 fn() 方法。
在 main() 方法中创建了 B 的实例,并调用了 m() 方法:
```java
public static void main(String[] args) {
B b = new B("thread-B");
b.m();
}
```