You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

家庭树程序开发疑问: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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:42:58