阅读以下程序段,找出错误并改正 public interface Com{ abstract void cry(); pubic int x=0; static int y=0; } abstract class Cat implement Com{ abstract void cry(); }
时间: 2023-12-14 20:39:45 浏览: 30
以下是改正后的程序段:
```
public interface Com {
abstract void cry();
int x = 0;
static int y = 0;
}
abstract class Cat implements Com {
abstract void cry();
}
```
错误:
- `pubic` 应该为 `public`。
- `Com` 接口中的 `x` 声明应该去掉 `public`。
- `Cat` 类实现 `Com` 接口时,`cry` 方法的访问级别不应该为 `abstract`。
修改:
- 将 `pubic` 改为 `public`。
- 将 `public int x=0;` 改为 `int x = 0;`。
- 将 `abstract void cry();` 改为 `public void cry() {}`。
相关问题
13阅读以下程序段,找出错误并改正 public interface Com{ abstract void cry(); pubic int x=0; static int y=0; } abstract class Cat implement Com{ abstract void cry(); }
以下是修改后的程序段:
```
public interface Com {
void cry();
int x = 0;
int y = 0;
}
abstract class Cat implements Com {
abstract void cry();
}
```
改正的错误有:
1. `pubic` 应该是 `public`。
2. 接口中的变量应该是 `public static final` 类型的,所以应该省略 `public` 修饰符,加上 `static final` 修饰符,同时变量名应该大写。
3. 抽象类实现接口时需要实现接口中的所有抽象方法,所以 `Cat` 类中的 `cry` 方法应该加上 `public` 访问修饰符。
1.class A { public: virtual void Fun(int){} virtual void Fun(double){} }; class B :pubic A { public: virtual void Fun1(int){} virtual void Fun(int){} }; class C :pubic B { public: virtual void Fun1(double){} virtual void Fun2(int){} }; 用图画出 三个类的虚表情况
以下是三个类的虚表情况的图示:
```
+---------------------+
| Class A |
+---------------------+
| +-----------------+ |
| | 0: vptr for A | |
| +-----------------+ |
| +-----------------+ |
| | 1: Fun(int) | |
| +-----------------+ |
| +-----------------+ |
| | 2: Fun(double) | |
| +-----------------+ |
+---------------------+
+---------------------+
| Class B |
+---------------------+
| +-----------------+ |
| | 0: vptr for B | |
| +-----------------+ |
| +-----------------+ |
| | 1: Fun(int) | |
| +-----------------+ |
| +-----------------+ |
| | 2: Fun(double) | |
| +-----------------+ |
| +-----------------+ |
| | 3: Fun1(int) | |
| +-----------------+ |
+---------------------+
+---------------------+
| Class C |
+---------------------+
| +-----------------+ |
| | 0: vptr for C | |
| +-----------------+ |
| +-----------------+ |
| | 1: Fun(int) | |
| +-----------------+ |
| +-----------------+ |
| | 2: Fun(double) | |
| +-----------------+ |
| +-----------------+ |
| | 3: Fun1(int) | |
| +-----------------+ |
| +-----------------+ |
| | 4: Fun1(double) | |
| +-----------------+ |
| +-----------------+ |
| | 5: Fun2(int) | |
| +-----------------+ |
+---------------------+
```
在这个示例中,每个类都有一个虚表指针(vptr),它指向一个虚表(vtable)。虚表是一个包含虚函数指针的数组,每个虚函数指针指向对应的虚函数。在这个示例中,每个类都有两个虚函数,分别是 Fun(int) 和 Fun(double)。在类 B 中添加了一个新的虚函数 Fun1(int),并重载了 Fun(int)。在类 C 中添加了两个新的虚函数 Fun1(double) 和 Fun2(int)。由于每个类都是公有继承自前一个类,所以每个类的虚表都包含前一个类的虚表以及它自己的虚函数。注意,类 C 的虚表中包含了类 A 的所有虚函数,因为它是通过类 B 间接继承自类 A 的。