2015-11-28 2 views
0

У меня есть 5 классов, а именно c1, c2, c3, container, main в том же пакете.Вызовите другое имя класса java из другого класса в том же пакете

Из основного класса я собираюсь напечатать имена классов c1, c2. c3 - суперкласс для c1 и c2.

Я хочу напечатать, как

мое имя c1

мое имя c2

супер класс c3

но печатает только

мое имя c3

мое имя c3

супер класс является основным

Вот мой основной класс

class main{ 
     public static void main(String[] argh) { 
      Container cont= new Container(); 
      c3 o1 = cont.getc3("c1"); 
      c3 o2 = cont.getc3("c2"); 
      System.out.println("My name is: " + o1.getClass().getName()); 
      System.out.println("My name is: " + o2.getClass().getName()); 
      System.out.println("Our superclass is: " + o1.getClass().getSuperclass().getName()); 

     } 
    } 

Вот мой класс-контейнер

class container extends main { 

     private String name; 

     public c3 getc3(String string) { 
      // TODO Auto-generated method stub 
      return new c3(string); 
     } 

     public String getName() { 
      System.out.println("-------------------------"+name); 
      return name; 
     } 

     public String toString() { 
      return getName(); 
     } 

    } 

Здесь с3 класс, который является супер класс

class c3 extends main { 

    private String name; 
    private String string1; 


    public c3(String string1) { 
     string1 = string1; 
    } 


    public String getName() { 
     return name; 
    } 

    public String toString() { 
     return getName(); 
    } 

    public String getString1() { 
     return string1; 
    } 

    public void setString1(String string1) { 
     this.string1 = string1; 
    } 

} 

Вот c1 класс

class c1 extends c3{ 

    public c1(String string1) { 
     super(string1); 
     // TODO Auto-generated constructor stub 
    } 

} 

здесь c2

class c1 extends c3{ 

    public c2(String string1) { 
     super(string1); 
     // TODO Auto-generated constructor stub 
    } 

} 

ответ

0

getc3 Ваш метод возвращает объекты c3 класса. Тот факт, что вы передаете ему строки «c1» и «c2», не имеет значения.

Вам необходимо будет изменить реализацию public c3 getc3(String string), если вы хотите, чтобы он возвращал isntances c1 или c2. Например:

public c3 getc3(String string) { 
     if (string.equals("c1")) 
      return new c1(string); 
     else if (string.equals("c2")) 
      return new c2(string); 
     else 
      return new c3(string); 
    } 
+0

как их получить, можете ли вы помочь здесь? –

+0

@ Ratwanska просмотреть править – Eran

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