gpt4 book ai didi

java - 如何从子类访问主类的公共(public)常量变量?

转载 作者:行者123 更新时间:2023-11-29 06:14:44 25 4
gpt4 key购买 nike

我有一个带有几个公共(public)常量变量的主类,还有一个自定义类,我想知道如何从自定义类访问主类的常量?

主类代码:

import processing.core.*;
import toxi.geom.*;
import toxi.math.*;

public class VoronoiTest extends PApplet {

// this are the constants I want to access from the Site class
public static int NUM_SITES = 8;
public static int SITE_MAX_VEL = 2;
public static int SITE_MARKER_SIZE = 6;

Site[] sites;

public void setup() {
size( 400, 400 );

sites = new Site[NUM_SITES];
for ( int i = 0; i < sites.length; i++) {
sites[i] = new Site( this );
}
}
}

这是 Site 类代码:

import processing.core.*;


public class Site {
PApplet parent;

float x, y;
PVector vel;

int c;

Site ( PApplet p ) {
parent = p;
// here I try to get the constants from the main class
vel = new PVector( parent.random(-parent.SITE_MAX_VEL, SITE_MAX_VEL), parent.random(-SITE_MAX_VEL, SITE_MAX_VEL) );
}
}

任何帮助将不胜感激!

最佳答案

你不能。因为 parentPApplet 类型,而不是 VoronoiTest,所以你不能保证它有静态成员 SITE_MAX_VEL。

相反,如果 parent VoronoiTest 类型,那么通过实例访问静态变量就没有意义了,因为它会不可能改变。

如前所述,要访问静态成员,请使用 ClassName.STATIC_MEMBER 表示法(在本例中为 VoronoiTest.SITE_MAX_VEL)。

不过更好的是,只需将常量存储在 Site 类中即可。毕竟,这对他们来说似乎是最合乎逻辑的地方。

import processing.core.*;

public class Site {
public static final int COUNT = 8;
public static final int MAX_VEL = 2;
public static final int MARKER_SIZE = 6;

PApplet parent;

float x, y;
PVector vel;

int c;

Site(PApplet p) {
parent = p;
vel = new PVector(
parent.random(-MAX_VEL, MAX_VEL),
parent.random(-MAX_VEL, MAX_VEL)
);
}
}

关于java - 如何从子类访问主类的公共(public)常量变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5522955/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com