2014-09-26 2 views
-3

У меня есть класс Rectangle выложенный как это:Наследование метода Square в Java

package Inheritance; 

/** 
* 
* @author Jacob 
*/ 
public class Rectangle { 
final private int length; 
final private int width; 

public Rectangle (int l, int w) 
{ 
    length = l; 
    width = w; 
} 

public int getLength() 
{ 
    return length; 
} 

public int getWidth() 
{ 
    return width; 
} 

@Override 
public String toString() 
{ 
    return String.format ("Rectangle (%dX%d)", length, width); 
} 

} 

то мне нужно создать класс квадрат следующим образом:

объявление Площадь: Square расширяет Rectangle/ В классе нет полей. У него есть параметризованный конструктор с (только) одним параметром/ Параметр используется для инициализации обоих полей Rectangle/ . Он имеет метод getSide, чтобы выставить боковую длину квадрата/ Переопределите метод toString, чтобы он возвращал строку следующего вида:/Square (side), например. Площадь (4)

Значения сторон будут жестко закодированы. Прямоугольник будет иметь ширину 4. Чтобы получить сторону квадрата 4, я создаю экземпляр прямоугольника и вызываю метод getWidth и устанавливаю его как длину стороны. То, как я мог бы это сделать, но в этом случае я бы использовал только одно из полей, поэтому, мой вопрос: как инициализировать оба поля? Могу ли я вызвать Rectangle и сделать длину и ширину равными или есть какой-то другой способ сделать это?

Вот код для моего класса Square:

public class Square { 

    public Square (int side) 
    { 
     super(side, side); 
    } 

    public int getSide() 
    { 
     return side; 
    } 

    @Override 
    public String toString() 
    { 
     return String.format ("Square (%d)", side); 
    } 
} 

Для линии супер (сторона, сторона) Я получаю конструктор ошибка Объект в классе Object не может быть применен к данным видам. Не требуется никаких аргументов, найдено int, int. Для моих операторов возврата я понимаю, что он не может найти переменную сторону.

+0

запах, как работа на дому. это? –

+1

В 'Квадрате', вы должны брать один параметр, размер которого вам просто нужно будет вызвать' super (size, size) 'в конструкторе' Square' ... – MadProgrammer

+0

Вы, вероятно, должны начать с следующего книги или учебника. Подобно разделу Java Tutorial [Наследование] (http://docs.oracle.com/javase/tutorial/java/concepts/inheritance.html) – vanza

ответ

0

Значения сторон будут жестко закодированы.

Я предполагаю, что вы имеете в виду, что вы будете жёстко значения для ширины и длины при создании Rectangle и Square объект (например, в main()). Эти значения должны быть абсолютно не быть жестко закодированы в любом месте в классах Rectangle и Square.

Прямоугольник будет иметь ширину 4. Для того чтобы получить сторону площади, чтобы быть 4 я создать экземпляр прямоугольника и вызвать метод GetWidth и установить, что в качестве длины стороны.

Совсем нет. Скорее всего, Square должен иметь свой собственный конструктор, который вызывает Rectangle конструктор с тем же значением как width и length:

public Square(int side) { 
    super(side, side); // Set the width and length to the same value. 
} 
+0

Я попытался использовать супер, но я поместил длину и ширину в качестве параметров. Я исправил то, что вы предложили, но в нем говорится, что супер не требует аргументов. Также при написании метода getSide я возвращаю ширину из метода getWidth? – user3440443

+0

@ user3440443 Пожалуйста, покажите код для вашего квадратного класса, чтобы мы могли вам помочь. –

+0

Я добавил квадратный класс. – user3440443