2017-01-05 2 views
0

Класс B наследуется от класса А.Как я могу вызвать параметризованный конструктор типа по умолчанию из параметризованного конструктора типа public, который находится в другом классе?

класса А имеют параметризированный конструктор типа доступа по умолчанию, который не доступен (по умолчанию. Он может быть доступен из другого класса, но из того же пакета)

Как может я получить доступ к моему конструктору видимости по умолчанию из другого класса?

Здесь я хочу получить доступ к A(int id1,String s) от public B(int id1,int h1), позвонив по телефону super(999,"super"); он бомбардирует ошибку, создать новый конструктор

Edit: Класс A и B находятся в одном проекте

public class A { 

      A(int id1,String s) 
     { 
      System.out.println("in parameterized constructor of class A"); 

     } 

    public class B extends A{ 

     public B(int id1,int h1) 
     { 
      super(999,"super");//The constructor A(int, String) is undefined 

      System.out.println("in parameterized constructor of class B"); 

     } 
+1

Ваших классов в разных пакетах? Если да, используйте модификатор 'protected' для конструктора:' protected A (int id1, String s) ... ' –

+0

Edit: Class A и B находятся в одном проекте –

+4

Проект не имеет значения, насколько JVM обеспокоен. Все, что имеет значение, это они в одном пакете? Btw, если класс A не имеет конструктора по умолчанию (конструктор без аргументов), и они не в одном пакете, ваш код не будет компилироваться даже без вызова super(). – Mordechai

ответ

3

Если B extends A, A только имеет конструктор видимости по умолчанию, а B не находится в том же пакете, что и A, тогда нет абсолютно 100% -ного способа сделать компиляцию B. Ни один из конструкторов A не будет виден до B, и это абсолютно необходимо.

(Вы можете использовать это намеренно, когда вам нужно иметь класс, который нуждается в подклассах, но вы не хотите быть подклассами вне пакета.)

+0

, так что в соответствии с вашим пакетом важнее? Если два класса находятся в одном пакете, тогда и только тогда можно получить доступ к конструктору доступа по умолчанию, и даже если они есть (одна и та же программа, но подклассы), это не имеет значения? –

+0

Да. Что касается Java, то нет такой вещи, как проект. –

Смежные вопросы