Модификаторы видимости
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. С перечислениями свич работает на отлично.
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.
Лично я не проходил нигде комплексного обучения, так что если что-то знаю, то знаю исключительно со стороны практического использования, а не реализации(((
Как уже было сказано, переменные могут иметь 2 типа-1)ссылочный, 2) по значению. Все переменные пользовательских классов-ссылочные, т.е обращаются к объекту класса.
Посмотрите на класс Tuto, написаный выше, методы которого (getcol,getLast...) модификатора static не имеют. Теперь возвращаемся к Main. В этом методе сперва создаются объекты класса Tuto(p1 и p2), и обращение к методам этого класса происходит через них (
p1.getLast()
, например)Но! Main ведь тоже является методом класса(Tutorial). А поскольку он является входной точкой любой программы, то вызывается ДО создания объекта его класса. Собственно, в этом и состоит основная роль модификатора static — он позволяет вызывать метод до создания объекта его класса. Воть.
offtop: только сейчас, глянув профиль, осознал, что ты-девушка, изучающая ассемблер. о_О это просто нереально круто, не часто вы встречаетесь =)
Ой, точно! Перегруженные методы забыл… Ну ладно, потом…