Используйте член данных или частный базовый класс вместо общедоступного базового класса.
Затем вы контролируете доступ к этому члену.
Вы можете сделать свойство Property абстрактным интерфейсом, если вам нужно полиморфное поведение.
Да. Просто объявите свой массив, а затем в конструкторе укажите длину:
public String[] elements;
public ArrayClass(int x) {
elements = new String[x];
}