class TwoPoints {
public static void main(String args[]) {
Point p1 = new Point();
Point p2 = new Point();
p1.x= 10;
p1.у = 20;
p2.x = 42;
p2.y = 99;
System.out.println("x = " + p1.x + " у = " + p1.у);
System.out.println("x = " + p2.x + "y = " + p2.y); }
}
В этом примере использовался класс Point. Было создано два объекта этого класса. Переменным х и у объектов p1 и р2 присвоены различные значения. Таким образом, мы продемонстрировали, что переменные различных объектов независимы на самом деле. Ниже приведен результат, полученный при выполнении этой программы,
С:\> Java TwoPoints
х = 10 у = 20
х = 42 у = 99
7.3. Объявление методов
Методы - это подпрограммы, присоединенные к конкретным определениям классов. Они описываются внутри определения класса на том же уровне, что и переменные объектов. При объявлении метода задаются тип возвращаемого им результата и список параметров. Общая форма объявления метода такова:
тип имя_метода (список формальных параметров) {
тело метода;
}
Тип результата, который должен возвращать метод, может быть любым, в том числе и типом void - в тех случаях, когда возвращать результат не требуется. Список формальных параметров - это последовательность пар тип- идентификатор, разделенных запятыми. Если у метода параметры отсутствуют, то после имени метода должны стоять пустые круглые скобки.
class Point {
int x,y;
void init(int a, int b) {
x = a;
y = b;
}
}
7.4. Вызов метода
В Java отсутствует возможность передачи параметров по ссылке на примитивный тип. В Java все параметры примитивных типов передаются по значению, а это означает, что у метода нет доступа к исходной переменной, использованной в качестве параметра. Заметим, что все объекты передаются по ссылке, можно изменять содержимое того объекта, на который ссылается данная переменная.
7.5. Скрытие переменных
В языке Java не допускается использование в одной или во вложенных областях видимости двух локальных переменных с одинаковыми именами. Интересно отметить, что при этом не запрещается объявлять формальные параметры методов, чьи имена совпадают с именами переменных представителей. Давайте рассмотрим в качестве примера иную версию метода init, в которой формальным параметрам даны имена х и у, а для доступа к одноименным переменным текущего объекта используется ссылка this.
class Point {
int x, у;
void init(int x, int y) {
this.x = x;
this.y = у
}
}
class TwoPointsInit {
public static void main(String args[]) {
Point p1 = new Point();
Point p2 = new Point();
p1.init(10, 20);
p2.init(42, 99);
System.out.println("x = " + p1.x + " у = " + p1.y);
System.out.println(“x = " + p2.x + " у = " + p2.y);
}
}
7.6. Конструкторы
Инициализировать все переменные класса всякий раз, когда создается его очередной представитель, — довольно утомительное дело даже в том случае, когда в классе имеются функции, подобные методу init. Для этого в Java предусмотрены специальные методы, называемые конструкторами. Конструктор — это метод класса, который инициализирует новый объект после его создания. Имя конструктора всегда совпадаетс именем класса, в котором он расположен. У конструкторов нет типа возвращаемого результата - никакого, даже void. Заменим метод init из предыдущего примера конструктором.
class Point {
int х, у;
Point(int х, int у) {
this.x = x;
this.y = y;
}
}
class PointCreate {
public static void main(String args[]) {
Point p = new Point(10,20);
System.out.println("x = " + p.x + " у = " + p.y);
}
}
7.7. Совмещение методов
Язык Java позволяет создавать несколько методов с одинаковыми именами, но с разными списками параметров. Такая техника называется совмещением методов (method overloading).В качестве примера приведена версия класса Point, в которой совмещение методов использовано для определения альтернативного конструктора, который инициализирует координаты х и у значениями по умолчанию (-1).
class Point {
int х, у;
Point(int х, int у) {
this.x = х;
this.y = у;
}
Point() {
х=-1;
y=-1;
}
}
class PointCreateAlt {
public static void main(String args[]) {
Point p = new Point();
System.out.println("x = " + p.x + " у = " + p.y);
}
}
В этом примере объект класса Point создается не при вызове первого конструктора, как это было раньше, а с помощью второго конструктора без параметров. Результат работы этой программы:
Читать дальше