家庭树程序开发疑问:Person类调用方法的参数输入问题
解决Person类构造方法的参数传递问题
嘿,我来帮你理清这个问题!首先我先把你没写完的Person类构造方法补全,然后一步步教你怎么正确调用它、传递参数。
第一步:补全Person类的完整代码
你的代码片段里构造方法没写完,先把它补全,确保能正确接收姓名参数并赋值给成员变量:
public class FamilyTree { private class Person { private String name; // 补全构造方法:用this区分成员变量和传入的参数 public Person(String name) { this.name = name; } // 可以加一个获取姓名的方法,方便后续展示家庭树成员 public String getName() { return this.name; } } // 接下来我们看怎么调用这个构造方法 }
第二步:正确调用Person构造方法的两种方式
因为你把Person定义成了FamilyTree的私有内部类,所以调用方式要注意,我给你两种常用的方案:
方案1:在FamilyTree内部封装创建成员的方法(推荐)
这种方式符合封装的设计逻辑,把Person的创建逻辑放在FamilyTree内部管理,示例:
public class FamilyTree { // 上面的Person类代码不变 // 添加一个方法来创建家庭成员 public void addFamilyMember(String memberName) { // 这里直接调用Person的构造方法,传入字符串类型的姓名参数 Person familyMember = new Person(memberName); System.out.println("已添加家庭成员:" + familyMember.getName()); } public static void main(String[] args) { // 先创建FamilyTree的实例 FamilyTree myFamily = new FamilyTree(); // 调用方法时,直接传入姓名的字符串字面量或者String变量 myFamily.addFamilyMember("张三"); // 也可以用变量传参 String momName = "李梅"; myFamily.addFamilyMember(momName); } }
方案2:修改Person的访问权限(可选)
如果你需要在FamilyTree外部也能创建Person实例,可以把Person的访问修饰符改成public(不过一般家庭树的成员类还是封装在内部更合理),此时外部创建的语法是外部类实例.new 内部类(参数):
public class FamilyTree { // 改成public内部类 public class Person { private String name; public Person(String name) { this.name = name; } public String getName() { return this.name; } } public static void main(String[] args) { FamilyTree myFamily = new FamilyTree(); // 外部创建内部类实例的语法 Person dad = myFamily.new Person("王建国"); System.out.println("父亲姓名:" + dad.getName()); } }
关键注意点
- 调用Person构造方法时,必须传入字符串类型的参数——可以是直接写的字符串字面量(比如
"张三"),也可以是一个String类型的变量(比如上面的momName) - 私有内部类只能在它的外部类(也就是FamilyTree)内部直接创建实例,外部无法访问,所以第一种方案是更符合家庭树程序设计逻辑的选择。
内容的提问来源于stack exchange,提问作者Daytona12
相关产品推荐
相关产品推荐

