14 августа 2011 14.08.11 16 1906

Туториал по java (pro) №2

+8

<< >>

Модификаторы видимости

private: доступ только внутри класса;
модификатор по-умолчанию: доступ внутри пакета
protected: доступ внутри пакета и в наследниках
public: доступ всем

Советую все переменные и классы (кроме нужных) в доп. классах делать private, а то всякие двусмыслености могут возникнуть: private String what;

static

Организуем список людей. Каждый объект будет представлять собой человека с возможностью получить его имя, фамилию и кол-во людей в списке:

public class Tutorial {
        public static void main(String[] args) {
                Tuto p1 = new Tuto(«Иван», «Иванов»);
                Tuto p2 = new Tuto(«Петр», «Петров»);
                System.out.println();
                System.out.println(p1.getLast()+" "+p1.getFirst()+". Количество — "+p1.getcol());
                System.out.println(p2.getLast()+" "+p2.getFirst()+". Количество — "+p2.getcol());
                System.out.println();
        }

}

public class Tuto {
       

private String first;
        private String last;
        private static int col = ;
       

public Tuto(String f, String l){
                first = f;
                last = l;
                col++;
        }
       

public String getFirst(){
                return first;
        }
       

public String getLast(){
                return last;
        }
       

public int getcol(){
                return col;
        }
       

}

Так как переменная col — статична, она является общей для всех объектов класса.

<©Linreal>
Как уже было сказано, переменные могут иметь 2 типа: ссылочный и по значению. Все переменные пользовательских классов — ссылочные, т.е обращаются к объекту класса.

Посмотрите на класс Tuto, написанный выше, методы которого (getcol,getLast...) модификатора static не имеют. Теперь возвращаемся к Main. В этом методе сперва создаются объекты класса Tuto(p1 и p2), и обращение к методам этого класса происходит через них (p1.getLast(), например)

Но! Main ведь тоже является методом класса(Tutorial). А поскольку он является входной точкой любой программы, то вызывается ДО создания объекта его класса. Собственно, в этом и состоит основная роль модификатора static — он позволяет вызывать метод до создания объекта его класса.

</©Linreal>

final

Делает из переменной константу. У класса — запрещает наследование, у метода — переопределение.

abstract

Антоним к final. Экземпляр подобного класса не может быть создан, но класс может быть суперклассом.

Вроде все, закончили с этим. Дальше будут полезные встроенные функции java.


Лучшие комментарии

Из предложения нормальных свичей тут.

Ну да, это и есть ожидаемый всеми project coin. обещают теперь к след. версии добавить.

На самом деле, нашёл решение-использовать enum. С перечислениями свич работает на отлично.
События и анонимные методы, которые за них отвечают =) GUI ведь без них особо не рассмотришь, вроде бы. (хотя тут основываюсь только на опыте c#, могу ошибаться)
и вот, я тут полазил по вики.… пример, показывающий долбаный идиотизм свичей со стрингами. (абстрактная java с goto)
switch(s.hashCode()) { // cause NPE if s is null
case 3482567: // "quux".hashCode()
    if (!s.equals("quux"))
        goto $default_label;
    goto $fooOrBarCode_label;
   
case 101574: // "foo".hashCode()
    if (!s.equals("foo"))
        goto $default_label;
    goto $fooOrBarCode_label;

case 97299// "bar".hashCode()
    if (!s.equals("bar"))
        goto $default_label;

    $fooOrBarCode_label:
    processFooOrBar(s);
    break;

case 97307: // "baz".hashCode()
    if (!s.equals("baz"))
        goto $default_label;
    processBaz(s);

default:
$default_label:
    processDefault(s);
    break;
}

Из предложения нормальных свичей тут. февраль 2009.
вообще-то по-умолчанию модификатор доступа public
фенкс, я вставлю это в текст, ок?(+копирайты)
Лично я не проходил нигде комплексного обучения, так что если что-то знаю, то знаю исключительно со стороны практического использования, а не реализации(((
Позволю себе немного расширить информацию о static, в контексте моего же комментария о ссылочных переменных в туториале №1, а именно, рассказать о его применении к методам.

Как уже было сказано, переменные могут иметь 2 типа-1)ссылочный, 2) по значению. Все переменные пользовательских классов-ссылочные, т.е обращаются к объекту класса.

Посмотрите на класс Tuto, написаный выше, методы которого (getcol,getLast...) модификатора static не имеют. Теперь возвращаемся к Main. В этом методе сперва создаются объекты класса Tuto(p1 и p2), и обращение к методам этого класса происходит через них (p1.getLast(), например)

Но! Main ведь тоже является методом класса(Tutorial). А поскольку он является входной точкой любой программы, то вызывается ДО создания объекта его класса. Собственно, в этом и состоит основная роль модификатора static — он позволяет вызывать метод до создания объекта его класса. Воть.
з.ы сорри, что влезаю в твоих уроках. если что, отпишись, перестану.
okay =)
offtop: только сейчас, глянув профиль, осознал, что ты-девушка, изучающая ассемблер. о_О это просто нереально круто, не часто вы встречаетесь =)
Кинете идей? Может gui?

Ой, точно! Перегруженные методы забыл… Ну ладно, потом…
Если честно — не очень разбираюсь в прелестях абстрактных классов, приглашаю кого-нибудь просветить меня)))
Читай также