如果我创建了一个ani类,和一个类名为p的该类型对象,然后在调用其中的函数时,为什么会出现表达式必须具有类类型,但它具有ani(*)()
时间: 2024-04-03 08:36:56 浏览: 91
这个错误信息通常是因为你尝试对一个指向该类型对象的指针进行函数调用,但该指针并没有被正确地解引用。
可能是因为你在调用函数时使用了错误的语法,或者该指针并不指向一个正确的类型对象。
你可以检查你的代码,确保你正确地解引用了指针,并且指针指向正确的对象。如果还有问题,请提供更多的代码细节,我会尽力帮助你解决问题。
相关问题
在类中定义属性和方法1)定义动物类Animal,私有属性sex,表示性别,数据类型为 boolean ;私有属性age,表示年龄,数据类型为 int;属性的 getters和 setters 方法;在类的构造方法中设置性别初始值为 false;公有方法Introduce0),用于介绍动物: I)若字段sex 属性的值为 true,方法返回一个字符串“This is a male Animal!”;Il)若字段 sex 属性的值为 false ,则方法返回一个字符串“This is a female Animal!”。(2)由基类Animal创建派生类 Dog,在派生类中实现方法重写。创建公有类Dog,它是从基类Animal 中派生出的;在类Dog的构造方法中,设置属性sex的初始值为true;在类Dog中重写基类Animal的方法Introduce:I)若属性 Sex的值为 true ,方法返回一个字符串“This is a male Dog!”;Il)若属性 Sex 的值为 false,则方法返回一个字符串“This is a female Dog!”在程序主方法中实例化类的对象,调用方法输出介绍动物的字符串(3)定义测试类AnimalTest, 实例化Animal的一个对象ani,调用类的方法ntroduce0,并输出方法返回的字符串实例化 Dog 的一个对象 dog,调用类的方法Introduce0,并输出方法返回的字符串。
下面是对应的 Java 代码:
```java
// Animal 类
public class Animal {
private boolean sex;
private int age;
public Animal() {
this.sex = false;
}
public boolean isSex() {
return sex;
}
public void setSex(boolean sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String Introduce() {
return sex ? "This is a male Animal!" : "This is a female Animal!";
}
}
// Dog 类
public class Dog extends Animal {
public Dog() {
setSex(true);
}
@Override
public String Introduce() {
return isSex() ? "This is a male Dog!" : "This is a female Dog!";
}
}
// 测试类 AnimalTest
public class AnimalTest {
public static void main(String[] args) {
Animal ani = new Animal();
System.out.println(ani.Introduce());
Dog dog = new Dog();
System.out.println(dog.Introduce());
}
}
```
运行结果:
```
This is a female Animal!
This is a male Dog!
```
Pet类 编写一个名为Pet的类,它应具有以下属性: ●name(用于宠物的名字) ● animal type(用于宠物的动物类型,例如'狗',猫'和'鸟") ●age(对于宠物的年龄) Pet类应该有一个_init_方法来创建这些属性。它还应该有以下方法 ● set name 此方法为_name属性赋值。 ● set_ ani mal type 该方法为 animal type属性赋值。 ● set_ age 此方法为_age属性赋值。 ● get_name 此方法返回_name属性的值。 ● get_ani maltype 此方法返回_ animal_type属性的值 ●get_age 此方法返回_age属性的值。 完成Pet类定义后,写一个程序创建一个Pet类对象。提示用户输入他的宠物的名字、类型和年 龄并且这些数据应该存储为对象的属性。使用对象的访问器方法来提取宠物的名字、类型和年龄,并 在屏幕上显示这些数据。
好的,以下是符合要求的 Pet 类的代码:
```python
class Pet:
def __init__(self, name, animal_type, age):
self.name = name
self.animal_type = animal_type
self.age = age
def set_name(self, name):
self.name = name
def set_animal_type(self, animal_type):
self.animal_type = animal_type
def set_age(self, age):
self.age = age
def get_name(self):
return self.name
def get_animal_type(self):
return self.animal_type
def get_age(self):
return self.age
```
接下来,我们可以使用上述类创建一个 Pet 对象,并从用户那里获取宠物的信息:
```python
pet_name = input("请输入您的宠物名字:")
pet_type = input("请输入您的宠物类型:")
pet_age = input("请输入您的宠物年龄:")
my_pet = Pet(pet_name, pet_type, pet_age)
print("您的宠物名字是:", my_pet.get_name())
print("您的宠物类型是:", my_pet.get_animal_type())
print("您的宠物年龄是:", my_pet.get_age())
```
在上述示例中,我们首先从用户那里获取了宠物的名字、类型和年龄,并使用这些信息创建了一个 Pet 对象。然后,我们使用该对象的访问器方法来提取并显示宠物的名字、类型和年龄。
阅读全文