Ваш первый Java-объект

Создание пакета

Перейдите в перспективу Java Browsing в Eclipse, если уже не находитесь в ней. Мы собираемся создать первый Java-класс. Первым шагом является создание места, где будет размещаться класс.

Вместо использования пакета по умолчанию давайте создадим один конкретно для проекта Intro. Выберите File>New>Package. При этом должен отобразиться мастер Package (см. рисунок 3).

Ваш первый Java-объект

Рис. 3. Мастер Package

Введите intro.core в качестве имени пакета и нажмите Finish. В рабочей области вы должны увидеть следующий пакет в виде Packages:

intro.core

Обратите внимание на то, что пиктограмма слева от пакета прозрачна, то есть, выглядит затемненной версией пиктограммы пакета. Это общее соглашение в пользовательском интерфейсе Eclipse для обозначения пустых элементов. Ваш пакет пока не содержит каких-либо Java-классов, поэтому пиктограмма затемнена.

Объявление класса

Вы можете создать Java-класс в Eclipse, выбрав File>New, но мы вместо этого будем использовать панель инструментов. Посмотрите на верхнюю часть вида Packages и найдите инструменты для создания проектов, пакетов и классов. Нажмите кнопку New Java Class (зеленая буква «C») для отображения мастера New Java Class. Введите Adult в качестве имени класса и примите все значения по умолчанию, нажав Finish. Теперь вы должны увидеть несколько изменений:

  • Класс  Adult  появляется в виде Classes справа от вида Packages (см. рисунок 4).

    Ваш первый Java-объект

    Рис. 4. Рабочая область

  • Пиктограмма пакета  intro.core  больше не затемнена.
  • Ниже этих видов отображается редактор для  Adult.java  .

Сейчас класс выглядит следующим образом:

package intro.core;

public class Adult { }

Eclipse генерирует оболочку или шаблон для класса за вас и вставляет оператор  package  сверху. Пока тело класса пустое. Мы просто должны добавить в него чего-нибудь. Вы можете настроить шаблоны для новых классов, методов и т.д. в мастере Preferences, который использовали ранее (Window>Preferences). Можно настроить шаблоны кода в Java>Code Style>Code Templates. Фактически для упрощения отображения кода я собираюсь удалить все комментарии из шаблонов, то есть, все следующие строки: начинающиеся с  // комментарии   , окруженные символами  /* комментарии */  , окруженные символами  /** комментарии */  . С этого момента вы не увидите каких-либо комментариев в коде до тех пор, пока мы специально не обсудим их применение, что будет сделано в следующем разделе.

Однако прежде чем продолжить, давайте продемонстрируем способ работы в Eclipse IDE, который облегчает жизнь. В редакторе измените слово class на clas и подождите несколько секунд. Обратите внимание на то, что Eclipse подчеркнет его красной волнистой линией. Если вы поместите над ней указатель мыши, Eclipse отобразит информационное окно, предупреждающее вас о наличии синтаксической ошибки. Eclipse помогает вам, периодически компилируя ваш код и ненавязчиво предупреждая вас о наличии проблемы. Если бы вы использовали программу командной строки  javac  , то должны были бы сначала откомпилировать код и подождать отображения ошибки. Это может сильно замедлить процесс разработки. Eclipse устраняет эту проблему.

Комментарии

Как большинство других языков программирования, Java поддерживает комментарии, являющиеся простыми строками, которые компилятор игнорирует при проверке синтаксиса. Java поддерживает несколько вариантов комментариев:

// Комментарий в одной строке. Компилятор игнорирует любой текст, следующий за двумя прямыми косыми чертами.
/* Комментарий в нескольких строках. Компилятор игнорирует любой текст, расположенный между звездочками. */
/** Комментарий в стиле javadoc. Компилятор игнорирует текст, расположенный между звездочками, а программа
javadoc использует его. */

Последний вариант наиболее интересен. В двух словах,  javadoc  — это программа, поставляемая вместе с дистрибутивом Java SDK, которая может помочь вам сгенерировать HTML-документ для вашего кода. Вы можете сгенерировать документацию для ваших собственных классов, которая выглядит почти также, как и интерактивная документация по Java API. Если вы закомментируете ваш код соответствующим образом, то сможете выполнить программу  javadoc  из командной строки. Вы можете найти инструкции и всю доступную информацию по  javadoc  на Web-сайте Java Technology.

Зарезервированные слова

Существует еще одна тема, которую мы должны рассмотреть перед началом написания кода, который компилятор будет проверять. В языке Java существуют некоторые слова, которые вы не можете использовать при именовании ваших переменных. Вот их список:

 abstract  boolean  break  byte
 case  catch  char  class
 const  continue  char  class
 default  do  double  else
 extend  false  final  finally
 float  for  goto  if
 implements  import  int  instanceof
 interface  long  int  native
 new  null  package  private
 protected  public  package  private
 static  strictfp  super  switch
 synchronized  short  super  this
 throw  throws  true  try
 transient  return  void  volatile
 while  assert  true  false
 null

Это не очень большой список, и Eclipse отображает зарезервированные слова жирным шрифтом при их вводе, поэтому вы даже не должны их запоминать. Все слова, кроме трех последних, являются ключевыми словами языка Java. Последние три слова — это зарезервированные слова. Для наших целей между ними нет разницы; вы не можете использовать ни те, ни другие.

Теперь немного реального кода.

Добавление переменных

Как я говорил ранее, экземпляр  Adult  знает свое имя, возраст, национальность и пол. Мы можем добавить эти данные к нашему классу  Adult  , объявляя их как переменные. Тогда каждый экземпляр класса  Adult  будет содержать их. Вероятнее всего, каждый экземпляр  Adult  будет иметь различные значения этих переменных. Вот почему переменные каждого объекта часто называются переменными экземпляра — они различны для каждого экземпляра класса. Давайте добавим их, используя в качестве спецификатора доступа ключевое слово  protected  :

package intro.core;

public class Adult {
	protected int age;
	protected String name;
	protected String race;
	protected String gender;
}

Теперь каждый экземпляр  Adult  будет содержать эти данные. Обратите внимание на то, что каждая строка кода заканчивается точкой с запятой. Это требование языка Java. Также отметим, что каждая переменная имеет тип данных. У нас есть одно целочисленная и три строковых переменных. Типы данных для переменных могут быть одной из двух разновидностей:

  • Примитивные типы данных.
  • Объекты (либо определенные пользователем, либо внутренние для языка Java), известные также как ссылочные переменные.

Примитивные типы данных

Существует девять примитивных типов данных, с которыми вы, вероятнее всего, регулярно будете сталкиваться:

Тип

Размер

Значение по умолчанию

Пример

 boolean N/A  false  true
 byte 8 bits  0  2
 char 16 bits  ‘u/0000’  ‘a’
 short 16 bits  0  12
 int 32 bits  0  123
 long 64 bits  0  9999999
 float 32 бит с десятичной точкой  0.0  123.45
 double 64 бит с десятичной точкой  0.0  999999999.99999999

Мы использовали  int  для переменной  age  , потому что нам не нужны десятичные значения, а тип  int  достаточно большой для хранения любого реального возраста человека. Мы использовали  String  для остальных трех переменных, поскольку они не являются цифровыми.  String  — это класс из пакета  java.lang  , к которому вы можете обратиться в своем Java-коде автоматически в любое время (мы поговорим об этом подробнее в разделе «Строки»). Вы можете объявить также и определенный пользователем тип переменных, например  Adult  .

Мы определили каждую переменную в отдельной строке, но это не обязательно. Если у вас есть две или более переменных одного типа, вы можете определить их в одной строке, разделив запятыми, например:

   accessSpecifier dataType variableName1, 
  variableName2, 
  variableName3 ,...

Если бы мы захотели инициализировать эти переменные при их объявлении, то могли бы просто добавить инициализацию после каждого названия переменной:

   accessSpecifier dataType variableName1  =   initialValue, 
  variableName2  =   initialValue, ...

Теперь наш класс знает о себе, и мы можем доказать это, что и сделаем в следующем разделе.

Метод main()

Существует специальный метод, который вы можете включить в любой класс, для того чтобы JRE мог выполнить код. Он называется  main()  . Каждый класс может иметь только один метод  main()  . Естественно, не каждый класс будет его иметь, но поскольку  Adult  — это единственный класс, который пока у нас есть, добавим к нему метод  main()  , для того чтобы можно было создать экземпляр класса  Adult  и проверить его переменные экземпляра:

package intro.core;

public class Adult {
	protected int age;
	protected String name;
	protected String race;
	protected String gender;
	
	public static void main(String[] args) {
		Adult myAdult = new Adult();
		
		System.out.println("Name: " + myAdult.name);
		System.out.println("Age: " + myAdult.age);
		System.out.println("Race: " + myAdult.race);
		System.out.println("Gender: " + myAdult.gender);
	}
}

В теле метода  main()  мы создали экземпляр класса  Adult  , затем распечатали значения переменных экземпляра. Посмотрите на первую строку. Это та ситуация, когда сторонники объектно-ориентированного кода критикуют язык Java. Они говорят, что new должен быть методом  Adult  , и вы, соответственно, должны вызывать его так:  Adult.new()  . Я, безусловно, принимаю их точку зрения, но язык Java не работает таким способом, и это один из случаев, когда сторонники ООП могут справедливо заявлять, что это не чистый объектно-ориентированный код. Снова посмотрите на первую строку. Вспомните, что каждый Java-класс имеет конструктор по умолчанию, который мы здесь и использовали.

После создания экземпляра  Adult  мы сохраняем его в локальной переменной под названием myAdult. Затем распечатываем значения его переменных экземпляра. Почти в каждом языке программирования вы можете распечатать что-либо на консоль. Язык Java не исключение. В Java вы делаете это при помощи вызова метода  println()  потока  out  объекта  System  . Не беспокойтесь о том, что пока не понимаете подробностей процесса. Просто знайте, что мы используем вспомогательный метод для вывода информации. В каждом вызове мы передаем строку символов и соединяем ее со значением переменной экземпляра  myAdult  . Мы рассмотрим этот метод подробно позже.

Выполнение кода в Eclipse

Для выполнения этого кода вам осталось сделать в Eclipse совсем немного. Выберите класс  Adult  в виде Types и нажмите на пиктограмму «бегущий человек» в панели инструментов. Должно появиться диалоговое окно Run, которое позволит вам создать конфигурацию для запуска вашей программы. Выберите Java Application в качестве типа конфигурации, которую вы хотите создать, и нажмите New. Eclipse укажет «Adult» как имя по умолчанию для конфигурации, что нам подходит. Нажмите Run для просмотра результатов. Eclipse отобразит вид Console ниже редактора кода; она должна выглядеть примерно так, как показано на рисунке 5.

Ваш первый Java-объект

Рис. 5. Результаты выполнения программы

Обратите внимание на то, что переменные содержали их значения по умолчанию. По умолчанию каждая переменная экземпляра пользовательского или встроенного типа имеет значение  null  . Почти всегда хорошей идеей является явная инициализация переменных, особенно для объектов, для того чтобы вы знали, какие значения в них содержатся. Вернитесь назад и проинициализируйте эти переменные следующими значениями:

Переменная Значение
 name  «Bob»
 age  25
 race  «inuit»
 gender  «male»

Запустите код повторно, нажав на пиктограмму «бегущий человек». Вы должны увидеть на консоли новые значения.

Теперь сделаем наш объект  Adult  способным рассказать другим объектам о своих данных.

Рейтинг
( Пока оценок нет )
Загрузка ...