编写一个匿名内部类,并在逆名内部类中,声明一个 publie void print_info0方法,输出自己的学号和姓名 并在测试类中调用
时间: 2024-02-27 16:57:51 浏览: 11
好的,请看以下代码:
```java
public class Test {
public static void main(String[] args) {
// 创建匿名内部类的对象
Object obj = new Object() {
public void print_info() {
System.out.println("学号:20210001,姓名:张三");
}
};
// 调用匿名内部类中的方法
((Object)obj).print_info();
}
}
```
在上面的代码中,我们创建了一个匿名内部类并在其中声明了一个公共的 `print_info()` 方法,输出了学号和姓名。在测试类中,通过创建匿名内部类的对象来调用这个方法,实现了对匿名内部类的调用。
相关问题
请用Java语言定义三个类,父类(抽象类)Geometricobject代表几何形状,子类Circte代表四形。具体属性和方法如不: (1)父类(抽象类)Geometricobjiect 属性:private String colorsprivate string name;为它们提供gettero和setter0方法 构造方法:为color和namc初始化 抽泉方法:publie vold rndAreao;用手计算八何图形的面积
好的,这里是我为您编写的Java代码:
```java
// Geometricobject.java
public abstract class Geometricobject {
private String color;
private String name;
public Geometricobject(String color, String name) {
this.color = color;
this.name = name;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public abstract void findArea();
}
```
```java
// Circle.java
public class Circle extends Geometricobject {
private double radius;
public Circle(String color, String name, double radius) {
super(color, name);
this.radius = radius;
}
public double getRadius() {
return radius;
}
public void setRadius(double radius) {
this.radius = radius;
}
@Override
public void findArea() {
double area = Math.PI * radius * radius;
System.out.println("The area of the circle is: " + area);
}
}
```
```java
// Main.java
public class Main {
public static void main(String[] args) {
Circle circle = new Circle("red", "circle", 2.0);
circle.findArea();
}
}
```
这里定义了一个抽象类Geometricobject,其中包含颜色和名称两个属性,以及抽象方法findArea()用于计算面积。然后定义了一个子类Circle继承自Geometricobject类,Circle类包含半径属性,以及实现了findArea()方法。在Main类中创建了一个Circle对象,并调用了它的findArea()方法来计算圆的面积。
0.指出下面程序中的错误,说明错误的原因,并进行改正include<iostream.h class basef private: int protected: int 要 public: void setxy(int m.int n)fx-m:y-n: void showxv0. cout<<”x-”<end: cout<y-”<<y<<endl: class derived;public base. private int z publie: void setsvz(inf mint nint Dfsetsv(mn):z-1:? void showxvz0). icout-"endlcout<-"Kend cout<"z-7endl: int main0 derived obi obiselvz(30.40.50):
错误:
1. 头文件应该是 `#include<iostream>` 而不是 `#include<iostream.h>`
2. 类名后应该有一个 `{`,而不是空格。
3. `int` 后应该有一个变量名,而不是空格。
4. 在 `setxy` 函数中,参数列表中应该有一个逗号 `,`,而不是点号 `.`。
5. 在 `setxy` 函数中,变量 `m` 和 `n` 之间应该有一个逗号 `,`,而不是点号 `.`。
6. 在 `showxv0` 函数中,字符串 `"x-"` 应该是 `"x-"` 而不是 `"x-"`。
7. 在 `showxv0` 函数中,字符串 `"y-"` 应该是 `"y-"` 而不是 `<y-`.
8. 在 `derived` 类定义中,应该有一个 `:` 而不是分号 `;`。
9. 在 `setsv` 函数中,参数列表中应该有一个逗号 `,`,而不是点号 `.`。
10. 在 `setsv` 函数中,变量 `m` 和 `n` 之间应该有一个逗号 `,`,而不是点号 `.`。
11. 在 `showxvz0` 函数中,字符串 `"endl"` 应该是 `endl` 而不是 `"endl"`.
12. 在 `showxvz0` 函数中,字符串 `<"z-"` 应该是 `"z-"` 而不是 `<"z-"`.
13. 在 `main` 函数中,应该是 `derived ob;` 而不是 `derived obi;`。
14. 在 `main` 函数中,应该是 `ob.setsvz(30, 40, 50);` 而不是 `obiselvz(30.40.50);`。
15. 在 `main` 函数中,应该是 `ob.showxvz();` 而不是 `obiselvz();`。
改正后的程序如下:
```
#include <iostream>
using namespace std;
class base {
private:
int x;
protected:
int y;
public:
void setxy(int m, int n) {
x = m;
y = n;
}
void showxy() {
cout << "x-" << x << endl;
cout << "y-" << y << endl;
}
};
class derived : public base {
private:
int z;
public:
void setsvz(int m, int n, int D) {
setxy(m, n);
z = D;
}
void showxvz() {
showxy();
cout << "z-" << z << endl;
}
};
int main() {
derived ob;
ob.setsvz(30, 40, 50);
ob.showxvz();
return 0;
}
```