You need to enable JavaScript to run this app. Java中不通过继承如何导入自定义类并使用其成员字段
优惠活动
大模型
产品
解决方案
定价
更多

Java中不通过继承如何导入自定义类并使用其成员字段

Java非继承场景下跨自定义类访问字段实现方案

可以通过包管理+import导入的方式实现需求,完全不需要使用继承。

前置知识:Java包(package)基本逻辑

  • 包是Java内置的类组织机制,相当于文件系统的文件夹,用于避免类名冲突、控制访问权限
  • IntelliJ IDEA中直接在src目录右键选择「New → Package」,输入自定义包名(比如com.yourproject.business)即可自动创建包结构,新建类时会自动在类顶部生成包声明

具体实现方案

你不需要通过继承获取Person类的字段,用**组合(持有Person类实例)**的方式即可实现,同时能完美控制getID()方法的访问权限,分两种场景处理:

场景1:Person和Commands在同一个包下

不需要额外导入类,直接在Commands类中声明Person类型的变量即可:

// Person类代码示例
package com.yourproject.business;

public class Person {
    // 开放给外部访问的字段
    private String name;
    private Integer age;
    // 不希望外部访问的敏感字段
    private String id;

    // 开放需要的getter方法
    public String getName() {
        return name;
    }
    public Integer getAge() {
        return age;
    }
    // getID设为private,仅Person类内部可访问
    private String getID() {
        return id;
    }
}
// Commands类代码示例
package com.yourproject.business;

public class Commands {
    // 持有Person类实例
    private Person person;

    // 构造方法传入Person实例
    public Commands(Person person) {
        this.person = person;
    }

    public void showPersonInfo() {
        // 正常调用开放的字段getter
        System.out.println("姓名:" + person.getName() + ",年龄:" + person.getAge());
        // 此处调用person.getID()会直接编译报错,符合权限要求
    }
}

场景2:Person和Commands在不同包下

只需要在Commands类顶部导入Person类即可,IntelliJ IDEA会在你输入Person类名时自动提示导入,无需手动写导入语句:
假设Person在com.yourproject.entity包,Commands在com.yourproject.controller包,Commands类代码如下:

package com.yourproject.controller;
// IDEA自动生成的导入语句
import com.yourproject.entity.Person;

public class Commands {
    // 后续使用逻辑和同包场景完全一致
    private Person person;
    public Commands(Person person) {
        this.person = person;
    }
}

这种组合模式是比继承更灵活的类复用方案,Commands类本身不会继承Person的任何方法,所以完全不用担心用户会通过Commands实例调用到getID()方法,只有你主动调用持有的person实例的方法时才会触发权限校验。

权限控制补充说明

  • 如果只希望同包下的类能访问getID(),可以去掉方法的private修饰符,使用默认的包访问权限,不同包的Commands类将无法调用该方法
  • 如果需要开放给指定类访问,可以用protected修饰符+继承的方式,但你的场景完全不需要用到该方案

内容的提问来源于stack exchange,提问作者Koleff

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 10:06:07