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

Java中如何从其他文件通过Animal类访问Breed类的变量?

解决方案

首先明确两个核心问题:

  1. Breed类的成员变量是private修饰的,外部类无法直接访问,必须通过类中提供的getter方法获取。
  2. Animal类中的breed成员是默认访问权限(无修饰符),如果你的调用类和Animal不在同一个包下,无法直接通过animal.breed访问,必须用Animal的getBreed()方法获取Breed实例。

正确访问方式

1. 同包下调用

如果调用类和Animal、Breed在同一个包中,可以通过两种方式获取Breed的变量值:

Animal animal = new Animal();
// 方式1:通过Animal的getter获取Breed实例,再调用Breed的getter
String afador = animal.getBreed().getAfador();
// 方式2:直接访问animal.breed(同包允许默认权限访问),再调用Breed的getter
String afaird = animal.breed.getAfaird();

2. 不同包下调用

必须通过Animal的getBreed()方法获取Breed实例,再调用对应的getter:

Animal animal = new Animal();
String aussiepom = animal.getBreed().getAussiepom();

优化建议

  • 遵循封装原则,把Animal类中的breed成员改为private,只通过getBreed()和setBreed()访问,避免直接暴露成员变量。
  • 若想简化访问逻辑,可以在Animal类中添加转发的getter方法,无需每次都先获取Breed实例:
public class Animal {
    // ... 原有代码 ...
    private Breed breed; // 改为private
    
    // 添加转发方法
    public String getBreedAfador() {
        return breed != null ? breed.getAfador() : null;
    }
    
    public String getBreedAfaird() {
        return breed != null ? breed.getAfaird() : null;
    }
    
    public String getBreedAussiepom() {
        return breed != null ? breed.getAussiepom() : null;
    }
}

之后就可以直接通过animal.getBreedAfador()获取对应值。

  • 注意初始化Breed实例,避免空指针异常,比如在Animal的构造方法中初始化:
public Animal() {
    this.breed = new Breed();
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 11:06:24