Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.03.2010, 20:44   #1
profi
Участник клуба Подтвердите свой е-майл
 
Регистрация: 19.11.2007
Сообщений: 1,022
По умолчанию Классы и статические методы.

Для вывода данных в консоль мы делаем такое обращение.

Цитата:
System.out.print("Hello");
где System - класс, out - статический объект класса PrintStream, print() - простой метод класса PrintStream. Просто стало интересно и решил смоделировать ситуацию:

Цитата:
class A
{
void show()
{
System.out.print("Hello");
}
}

class B
{
static A a;
}

public class Test {

public static void main(String[] args) {
B.a.show();
}
}
Где B - аналог класса System, a - аналог объекта out, show() - аналог метода print(). Но так не работает, так как метод show() должен быть статическим, мы все таки его же вызываем без создания объекта, так почему же метод print() не статический? И как тогда он вызывается без проблем?
profi вне форума Ответить с цитированием
Старый 28.03.2010, 22:04   #2
MalCer
Форумчанин
 
Аватар для MalCer
 
Регистрация: 15.07.2008
Сообщений: 615
По умолчанию

Вроде так работает
Код:
static void show(){
   System.out.print("Hello");
 }
}
xor eax, eax
xchg [eax], eax
MalCer вне форума Ответить с цитированием
Старый 28.03.2010, 22:30   #3
profi
Участник клуба Подтвердите свой е-майл
 
Регистрация: 19.11.2007
Сообщений: 1,022
По умолчанию

MalCer ну да. Я знаю, что так будет работать. Я не пойму просто почему метод print() из класса PrintStream работает. Он же не статистический (из документации вычитал).
profi вне форума Ответить с цитированием
Старый 29.03.2010, 09:04   #4
profi
Участник клуба Подтвердите свой е-майл
 
Регистрация: 19.11.2007
Сообщений: 1,022
По умолчанию

Наконец то догадался . Не статический метод можно, в данном случае show(), вызвать только одним способом - это создать объект, что я и сделал в классе:

Код:
class B
{
static A a = new A();
}
Или сделать статическим метод show() и вызвать не создавая объект, а просто через ссылку.
profi вне форума Ответить с цитированием
Старый 29.03.2010, 09:09   #5
edgy
Форумчанин
 
Регистрация: 15.06.2008
Сообщений: 271
По умолчанию

В System.java можно найти такую строчку

Код:
public final static PrintStream out = nullPrintStream();
edgy вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
статические переменные cooperOk JavaScript, Ajax 1 18.11.2009 12:01
статические массивы в pascal'е ? golerka Помощь студентам 1 19.05.2009 21:16
Найти все статические методы... lordsyrius Общие вопросы Delphi 4 05.04.2009 23:52
Как подъобекту объекта добавить методы/свойства/классы? Izhic Компоненты Delphi 1 19.10.2008 13:02
Классы и методы класса Exploit Помощь студентам 9 17.12.2006 18:21