创建内部类报错了
要求:按照下面要求编写程序:
(1)定义一个名为 Person 的类,包含私有属性:姓名(name),年龄(age),体重(weight),身高(height);包含一个4个参数的构造方法,通过形参完成对成员变量的赋值操作。
(2) Person中有一个成员内部类Heart:其中包含属性:心率(heartRate);包含方法: showPersonInfo(),显示Person以及Heart的全部属性
(3)在类Test的主方法中,创建一个名叫张三,年龄20,身高180,体重150的对象,调用方法showPersonInfo()显示张三的全部信息。
public class Person {
private String name;
private String age;
private String weight;
private String height;
public Person(String name,String age,String weight,String height) {
this.name=name;
this.age=age;
this.weight=weight;
this.height=height;
}
public class Heart(){
public int heartRate;
public void showPersonInfo() {
System.out.println(name+age+weight+height+heartRate);
}
}
}
public class Text {
public static void main(String[] args) {
Person p=new Person("张三"+"20"+"180"+"155");
Person.Heart h=outer.new.Heart();
}
参考如下:
public class Person {
private String name;
private int age;
private float weight;
private float height;
public Person(String name, int age, float weight, float height) {
this.name = name;
this.age = age;
this.weight = weight;
this.height = height;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
", weight=" + weight +
", height=" + height +
'}';
}
class Heart {
int heartRate;
Heart(int heartRate) {
this.heartRate = heartRate;
}
public void showPersonInfo() {
System.out.print(Person.this.toString() + "heartRate:" + heartRate);
}
}
}
public class Test {
public static void main(String[] args) {
Person person = new Person("张三", 20, 180, 150);
Person.Heart heart = person.new Heart(80);
heart.showPersonInfo();
}
}
不知道你这个问题是否已经解决, 如果还没有解决的话:解决方案:
首先,创建Person类,并在其中定义一个成员内部类Heart。
class Person:
def __init__(self, name, age, height, weight):
self.name = name
self.age = age
self.height = height
self.weight = weight
self.heart = self.Heart()
class Heart:
def __init__(self):
self.rate = 70
def showPersonInfo(self):
print("Name:", self.name)
print("Age:", self.age)
print("Height:", self.height)
print("Weight:", self.weight)
print("Heart rate:", self.rate)
在这里,我们将Heart类作为Person类的成员内部类进行定义。在初始化方法中,我们为心率属性设置了默认值,并定义了showPersonInfo方法,用于显示所有属性。
接下来,我们可以创建一个张三对象,并调用他的showPersonInfo方法,来显示他的所有属性。
person = Person("张三", 20, 180, 150)
person.heart.showPersonInfo()
这里我们将张三的年龄、身高和体重等属性传递给了Person类,同时调用了成员内部类Heart中的showPersonInfo方法,输出所有属性。
完整代码:
class Person:
def __init__(self, name, age, height, weight):
self.name = name
self.age = age
self.height = height
self.weight = weight
self.heart = self.Heart()
class Heart:
def __init__(self):
self.rate = 70
def showPersonInfo(self):
print("Name:", self.name)
print("Age:", self.age)
print("Height:", self.height)
print("Weight:", self.weight)
print("Heart rate:", self.rate)
person = Person("张三", 20, 180, 150)
person.heart.showPersonInfo()