2015-05-26 2 views
1

BaseExample класса (я не позволил сделать переменную защищенную на этом примере):.valueOf с помощью частной переменной другого класса,

public class BaseExample { 
    private int a; 

    public BaseExample(int inVal) { 
     a = inVal; 
    } 

    public BaseExample(BaseExample other){ 
     a = other.a; 
    } 

    public String toString(){ 
     return String.valueOf(a); 
    } 


} 

DerivedExample Класс:

public class DerivedExample extends BaseExample { 
    private int b; 



public DerivedExample(int inVal1, int inVal2){ 
     super(inVal2); 
     a = inVal2; 

    } 
} 

супер метод работал. Теперь, как бы я это называю, если я спросил это:

**Returns a reference to a string containing the value stored in the inherited varible a followed by a colon followed by the value stored in b public String toString()** 

Я попытался это:

public String toString(){ 
      int base = new BaseExample(b); 

      return String.valueOf(base:this.b); 

     } 

Если я ставлю два возвращения, это дало бы мне ошибку недостижимого кода. И если я добавлю супер внутри valueOf, это не сработает. И это не работает. Как это выполняется?

+0

Вы не поглотитель, но у вас есть 'реализацию toString' в супер класс, который возвращает значение' Ā' , Используй это. –

ответ

1

Я думаю, вы неправильно поняли это требование, вам нужно напечатать a, который находится в родительском классе, разделенном двоеточием, объединенным с b, который находится в текущем классе.

String.valueOf(base:this.b) 

Это неправильный синтаксис, что вы хотите

super.toString() + ":" + this.b; 
+0

и, конечно, чтобы быть ясным, он должен поставить 'return' перед этим –

+0

@BenKnoble И оператор return должен быть в методе, а метод в объявлении класса и в объявлении класса в классе .java ... Он уже использует 'return'. –

+0

Ах. Теперь он имеет полный смысл. Я определенно интерпретировал, что двоеточие находится внутри valueOf(). Спасибо. – userb