Страница 1 из 1

override

Добавлено: 09 июл 2004, 17:35
Oscar
Есть у меня набор станций.
Каждая станция рисуется прямоугольником.
Все станции должны выглядеть одинаково, по этому width и height я решил сделать static (надеюсь, я правильно догадываюсь, для чего этот static вообще есть?..).

Код: Выделить всё

public class Station extends Rectangle
{
  private String name;  
  private static int width; //override
  private static int height; //override

  public Station(String name, int x, int y, int width, int height)
  {
    super(x, y, width, height);
    this.name = name;
  }

 public static void setSize(int width, int height)//override + Error
 {
   Station.width = width;
   Station.height = height;
 }

}
Когда я пытаюсь переписать метод setSize оно говорит, что не может этого сделать.

На java.sun написано, что setSize в Rectangle выглядит так:

Код: Выделить всё

public void setSize(int width, int height)
Тут же нету finalized, значит можно менять?

Также ранее пытался переписать getX(), чтобы оно возвращало не double, а int .. Та же проблема.

Скажите, это вообще невозможно, или я просто что-то не так делаю?

Добавлено: 13 июл 2004, 13:44
Ageless
static вообще необходим для того, чтобы обращаться к полям и методам, не создавая экземпляра класса, что ты и делаешь. Возьми к примеру public static void main(...) {...}

Добавлено: 13 июл 2004, 13:59
Ageless
import java.awt.*;

public class Station extends Rectangle {
private String name;
private static int width, height;

public Station(String name, int x, int y, int width, int height) {
super(x, y, width, height);
this.name = name;
}

public static void :arrow: setSizeAnother(int width, int height) {
Station.width = width;
Station.height = height;
}
}

/*Дело в том, что при переопределении метода нельзя сделать его статическим, если он таковым не был. Так всё работает, но без override. Просто не переопределяй метод, а обзови его по-другому, или напиши свой MyRectangle (правда придётся помучаться) и унаследуй свои классы от него.*/

Добавлено: 13 июл 2004, 14:35
Oscar
Ageless,
Ну в общем ... не станический статическим делать нельзя ..
Спасибо, буду знать ;-)
Я ещё разок хорошенько подумаю, а нужно ли это мне, как статические значения..