Трудно понять wjat вы спрашиваете, но вот возможный ответ:
класс Make B подкласс A:
public class A {
// Declaration of the 'array' attribute
public float[] array = new float[]{1.1f, 2.2f, 3.3f};
}
class B extends A {
// Every instance of 'B' also has an 'array' attribute
}
Если array
будет повторно объявлен быть public static
, вы получите ситуация, когда имеется атрибут array
, который может быть назван A.array
или B.array
. (Или в любом A
или B
, как только array
... или даже a.array
или b.array
где a
и b
имеют типов A
и B
соответственно.)
Если вы не можете создать прямую или подтип отношения между A
и B
(или A
, B
и некоторый третий класс, содержащий декларации), то вам не повезло. Они не могут делиться декларациями.
Однако вы можете использовать статический импорт, чтобы он выглядел так, как будто объявление является общим. Например:
public class A {
// Declaration of the 'array' attribute
public float[] array = new float[]{1.1f, 2.2f, 3.3f};
}
import static A.array;
class B {
// now I can use 'array' without qualifying it with 'A'
}
Кстати, это вообще плохая идея использовать static
переменные разделить состояние, особенно состояние представлено как обнаженные массивы. Это явно не объектно-ориентированное.
Это уже расширение другого класса. Я отредактировал свой пример, чтобы отразить это. – Skizit