No Image

Как вызвать класс в java

СОДЕРЖАНИЕ
331 просмотров
16 декабря 2019

Создавать класс мы будем в программе Ecllipse, но также можно работать в любой другой IDE или в блокноте. В качестве примера мы будем создавать класс, который описывает характеристики и поведение кота.

Вспомним урок 3, и создадим в нашем проекте новый класс под именем Сat. Для этого в меню Ecllipse выберем File -> new -> >обязательно с большой буквы! ). Обратите внимание, что галочка public static void main (String[] args) должна быть снята! Затем нажмем Finish (рис 5.1).

В итоге, у нас создался новый класс (рис 5.2).

Структура класса в java

Класс в java оформляется с помощью следующей конструкции:

Рассмотрим ее составляющие:

public – модификатор доступа к классу, в данном случае он нам говорит, что этот класс будет доступен не только данному классу, но и другим. В java существуют и другие модификаторы, но об этого поговорим позднее.

class – ключевое слово, говорящее о том, что это класс.

Cat – имя класса. Имена классов принято писать с заглавной буквы.

< >– фигурные скобки, между которыми разместится тело нашего класса.

В предыдущем уроке мы упоминали, что классы в java состоят из атрибутов и методов, присвоим некоторые и нашему коту.

Атрибуты класса Сat

Атрибутами кота могут быть: имя, вес, окраска. Атрибуты это переменные, которые объявляются следующим образом:

private здесь опять же указывает на права доступа. К переменной, в данном случае, можно обращаться только из ее класса, чтобы классы извне не могли ее изменить (вспомним инкапсуляцию из урока 4).

int, String – это типы данных. В данном случае вес будет задан при помощи целого числа – int, a имя и цвет при помощи символьной строки String.

После объявления каждого атрибута должна ставиться точка с запятой ;

При помощи // в коде программы оформляются комментарии, которые являются правилом хорошего тона.

Методы класса Сat

Пусть наш кот умеет есть, спать и разговаривать. Опишем это поведение с помощью методов.

public void eat() – сигнатура метода, его определение. В данном случае она нам говорит о том, что:

  • метод eat() доступен для других классов – public;
  • метод eat() не возвращает никаких данных – void.

eat – имя метода. Имена методов, в отличие от имен классов, принято писать с маленькой буквы. На конце каждого метода после имени всегда идут круглые скобки ( ), пустые или содержащие параметры (об этом позднее).

После сигнатуры метода идут фигурные скобки < >. В них содержится тело метода. Тело нашего метода содержит просто вывод сообщения о том, что кот кушает — "Eating.
"
. За вывод текстового сообщения отвечает метод System.out.print("Eating.
").


— символ перевода строки, чтобы при выводе наших сообщений все они не писались в одну строку.

Аналогично предыдущему методу опишем спящего кота:

И немного иначе опишем метод – кот говорит:

В отличие от предыдущих методов этот метод возвращает значение и имеет входные параметры. Давайте подробнее рассмотрим сигнатуру метода public String speak(String words):

public — метод speak() доступен для других классов;

String — тип значения, которое возвращает метод. В предыдущих случаях ключевое слово void указывало на то, что метод ничего не возвращает. В данном случае String указывает на то, что метод возвращает значение типа строка.

Что же это значит? В процессе своей работы метод выполняет определенные действия над данными. Иногда необходимо, чтобы результат этих действий был передан для дальнейшей обработки другим классам, в этом случае метод передает (возвращает) этот результат. Эти возвращаемые данные относятся к какому-либо типу. В нашем примере это тип символьной строки, String.

Возвращающие методы должны содержать в своем теле ключевое слово return, которое указывает на то, что именно возвращает данный метод. В нашем случае это переменная phrase.

speak — имя метода.

(String words) — входные параметры. Входные параметры — это какие-либо данные, которые передаются из других классов и, которые метод должен обработать. Наш метод получает в качестве входных данных строку в виде переменной words, к этой строке дописывает «. mauu. » и возвращает то, что получилось.

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

Далее рассмотрим обращение к классу Cat. И то, как его использовать в работе.

Перейдем в класс HelloWorld, который мы создавали в уроке 3 и немного его модифицируем. Удалим строку System.out.println("Hello World"); , чтобы у нас осталось только следующее (рис 5.3).:

Если вы не проходили урок 3 и не создавали класс HelloWorld, то вам его нужно создать: File -> new -> class, ввести в открывшемся окне имя класса и в этот раз обязательно установить галочку public static void main(String[] args).

public static void main(String[] args) – сигнатура метода main(). Программа состоит из нескольких классов, но только один из классов может содержать метод main(). Mетод main(), это так называемая точка входа в программу. Без этого метода мы не сможем стартовать программу. Теперь, вместо приветствия миру, этот метод будет содержать код для работы с классом Cat.

Пишем в тело метода main() (между его фигурными скобками) следующие строки:

Разберем подробнее, что это значит.

Прежде чем вызывать созданные нами методы в классе Cat и заставить нашего кота есть, спать и говорить, сперва нужно создать экземпляр класса (инстанцию).

Данная строчка нам говорит о том, что в памяти создан экземпляр объекта Cat, а переменная ourcat типа Cat (такого же, как и наш объект) указывает на то место в памяти, где был этот объект создан.

Переменную ourcat теперь можно использовать для вызова методов класса Cat, например:

При вызове этих методов в программе Eclipse удобно пользоваться комбинацией клавиш

Ctrl + пробел, после введения имени переменной и точки (рис 5.4). Программа подскажет, какие можно использовать методы для данной переменной.

Если метод возвращает какое-либо значение, например, как наш метод speak() возвращает значение типа String, то его можно вызывать следующим образом:

  • объявить переменную такого же типа, что и возвращаемое значение (в нашем случае String)
  • присвоить ей вызванный метод, например:

Вспомним, что при описании нашего метода он содержал параметры speak(String words). Теперь, при вызове в качестве параметра выступила фраза "Play with me", метод speak() ее обработал и вернул "Play with me. mauu. ". Именно это значение он присвоил переменной say.

Мы это можем проверить, выведя say на печать при помощи команды:

Итак, наш класс HelloWorld теперь выглядит следующим образом:

Теперь сохраним (Ctrl+Shift+S или ) и запустим () нашу программу. При запуске Eclipse может предложить выбрать Java Applet или Java Application. Нужно выбрать Java Application (рис 5.5).

В качестве результата внизу в консоли мы получаем следующие строки.

На этом закончим данный урок, итак, в этом уроке мы:

  • Научились создавать класс в java.
  • Научились объявлять атрибуты и методы класса.
  • Узнали, что методы могут возвращать или не возвращать значения, иметь или не иметь входных параметров.
  • Узнали что такое метод main().
  • Научились создавать экземпляр класса и вызывать его методы, то есть работать с созданным объектом.

Для закрепления материала предлагаю самостоятельно создать класс Dog, где описать характеристики и поведение собаки, а потом вызвать этот класс из HelloWorld. Свои вопросы можете оставлять в комментариях.

Комментариев к записи: 115

При создании проекта выводится ошибка:
Build path specifies execution environment CDC-1.1/Foundation-1.1. There are no JREs installed in the workspace that are strictly compatible with this environment.
Чем это решить?

посмотрите тут https://www.eclipse.org/forums/index.php/t/685160/ или еще погуглите, я лично с таким не сталкивалась.

Здравствуйте!
Скажите пожалуйста, обязательно ли указывать права доступа конкретно для каждого атрибута в классе?

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

В объектно-ориентированном программировании метод — это именованный блок кода, который объявляется внутри класса и может быть использован многократно. Если вы знакомы с процедурным программированием (Pascal, Basic), вспомните, что такое функция — по принципу работы у неё и метода много общего.

Хорошо написанный метод решает одну практическую задачу: находит квадратный корень из числа (как штатный метод sqrt() в Java), преобразует число в строку (метод toString()), присваивает значения полям объекта и так далее.

Новый метод сначала объявляют и определяют, затем вызывают для нужного объекта или класса.

Штатные — встроенные — методы языка работают со служебными объектами. Например, метод print в Java выводит значения в консоль. Вызывают его так:

Обратите внимание на структуру: у класса System есть поле out — поток ввода/вывода. Поле — тоже объект, и у него есть метод print(), который мы вызываем.

Ещё есть метод println(), который при выводе значений автоматически переводит каретку на следующую строку. Это избавляет от необходимости ставить «
» в месте переноса строки.

Чтобы Java-приложение могло работать, в его базовом классе обязательно нужно объявить метод main.

Как видите, в качестве параметра main принимает массив строк, в данном случае — параметров запуска.

Объявление и определение метода в Java

Методы могут возвращать или не возвращать значения, могут вызываться с указанием параметров или без. Тип возвращаемых данных указывают при объявлении метода — перед его именем.

В примере ниже метод должен найти большее из двух целых чисел, поэтому тип возвращаемого значения — int:

В заголовке метода сначала идут модификаторы, определяющие, на каких условиях он доступен для вызова. Об этом чуть ниже. Вернёмся к заголовку: int — возвращаемый тип, maxFinder — имя метода, в скобках — параметры.

В теле метода заводим переменную max, куда потом запишем большее число. Далее сравниваем значения, фиксируем большее в max и возвращаем.

Обратите внимание, return может работать не только с одной переменной, но и с выражением. Если бы мы не сравнивали значения, а складывали, результат можно было бы вернуть без дополнительной внутренней переменной. В теле метода была бы всего одна строка:

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

Как вызвать метод в Java

Метод с модификатором public можно вызывать из любого класса, в том числе размещенного во внешнем файле. Если нужно, чтобы метод был доступен исключительно внутри своего класса, применяют модификатор private. Есть и более мягкий вариант ограничения доступа: методы с модификатором protected доступны подклассам своего класса и другим классам из того же пакета. Чем сложнее получить доступ к методу извне, тем безопаснее — ниже риск ошибок.

Статический метод в Java принадлежит классу, а не объектам (и экземплярам) класса. Поэтому его вызывают без создания экземпляра.

Для простоты мы сделали методы публичными и статическими и разместили их в главном классе программы.

Вызывают методы двумя способами — в зависимости от того, возвращают они что-то или нет. Если да, подставляем значение, куда нам нужно:

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

После вызова метод управляет программой до окончания своей работы: пока в его теле не сработает оператор возврата или прерывания, либо пока не будут выполнены все находящиеся в нём инструкции.

Вызовем theWarning, который ничего не возвращает:

Этот метод обходится без помощников — делает, что должен, и передаёт управление последующему коду.

Вызов метода из другого класса

А если бы maxFinder находился в отдельном классе и был не статическим? Тогда для его вызова пришлось бы сначала создать объект класса, в котором он находится. Допустим, метод находится в классе SampleClass. Вызываем:

Статический метод вызывают через точку от имени класса — вот так:

Перегрузка методов в Java

Что, если нам нужно сравнивать не только целые числа, но и числа с плавающей точкой? Реализовать это поможет перегрузка метода. Копипастим метод maxFinder в тот же класс, заменяем типы всех задействованных значений на double:

Имя метода не меняем! Это и есть перегрузка: компилятор сам выберет, какую из версий метода использовать — в зависимости от того, значения какого типа сравниваем.

Ключевое слово this в методах Java

Ключевое слово this позволяет ссылаться на экземпляры класса: их переменные, методы и конструкторы. Используют this только внутри метода или конструктора экземпляра. Например, вот так можно связать входные параметры метода с одноименными параметрами конкретного экземпляра класса:

Ещё пример — вызов одного конструктора из другого:

Это называется «явный вызов конструктора».

Абстрактные методы в Джаве

Абстрактным называют метод, который объявлен без реализации — он не имеет ни тела, ни даже фигурных скобок. Перед именем такого метода ставят модификатор abstract:

Зачем он такой нужен? В качестве шаблона для других методов из других классов. Вот есть у нас абстрактный класс «Строение», а в нём — абстрактный метод «возвести». Реализовывать эти абстракции нужно через несколько неабстрактных классов-наследников и их методы. Пример: класс «Хижина» — метод «стройХижину», класс «Мост» — метод «стройМост» и др.

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

Кроме этого, рекомендуем помотреть вебинар по введению в ООП на Java, где также будет рассматриваться работа с методами и конструкторами.

В объектно-ориентированном программировании метод — это именованный блок кода, который объявляется внутри класса и может быть использован многократно. Если вы знакомы с процедурным программированием (Pascal, Basic), вспомните, что такое функция — по принципу работы у неё и метода много общего.

Хорошо написанный метод решает одну практическую задачу: находит квадратный корень из числа (как штатный метод sqrt() в Java), преобразует число в строку (метод toString()), присваивает значения полям объекта и так далее.

Новый метод сначала объявляют и определяют, затем вызывают для нужного объекта или класса.

Штатные — встроенные — методы языка работают со служебными объектами. Например, метод print в Java выводит значения в консоль. Вызывают его так:

Обратите внимание на структуру: у класса System есть поле out — поток ввода/вывода. Поле — тоже объект, и у него есть метод print(), который мы вызываем.

Ещё есть метод println(), который при выводе значений автоматически переводит каретку на следующую строку. Это избавляет от необходимости ставить «
» в месте переноса строки.

Чтобы Java-приложение могло работать, в его базовом классе обязательно нужно объявить метод main.

Как видите, в качестве параметра main принимает массив строк, в данном случае — параметров запуска.

Объявление и определение метода в Java

Методы могут возвращать или не возвращать значения, могут вызываться с указанием параметров или без. Тип возвращаемых данных указывают при объявлении метода — перед его именем.

В примере ниже метод должен найти большее из двух целых чисел, поэтому тип возвращаемого значения — int:

В заголовке метода сначала идут модификаторы, определяющие, на каких условиях он доступен для вызова. Об этом чуть ниже. Вернёмся к заголовку: int — возвращаемый тип, maxFinder — имя метода, в скобках — параметры.

В теле метода заводим переменную max, куда потом запишем большее число. Далее сравниваем значения, фиксируем большее в max и возвращаем.

Обратите внимание, return может работать не только с одной переменной, но и с выражением. Если бы мы не сравнивали значения, а складывали, результат можно было бы вернуть без дополнительной внутренней переменной. В теле метода была бы всего одна строка:

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

Как вызвать метод в Java

Метод с модификатором public можно вызывать из любого класса, в том числе размещенного во внешнем файле. Если нужно, чтобы метод был доступен исключительно внутри своего класса, применяют модификатор private. Есть и более мягкий вариант ограничения доступа: методы с модификатором protected доступны подклассам своего класса и другим классам из того же пакета. Чем сложнее получить доступ к методу извне, тем безопаснее — ниже риск ошибок.

Статический метод в Java принадлежит классу, а не объектам (и экземплярам) класса. Поэтому его вызывают без создания экземпляра.

Для простоты мы сделали методы публичными и статическими и разместили их в главном классе программы.

Вызывают методы двумя способами — в зависимости от того, возвращают они что-то или нет. Если да, подставляем значение, куда нам нужно:

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

После вызова метод управляет программой до окончания своей работы: пока в его теле не сработает оператор возврата или прерывания, либо пока не будут выполнены все находящиеся в нём инструкции.

Вызовем theWarning, который ничего не возвращает:

Этот метод обходится без помощников — делает, что должен, и передаёт управление последующему коду.

Вызов метода из другого класса

А если бы maxFinder находился в отдельном классе и был не статическим? Тогда для его вызова пришлось бы сначала создать объект класса, в котором он находится. Допустим, метод находится в классе SampleClass. Вызываем:

Статический метод вызывают через точку от имени класса — вот так:

Перегрузка методов в Java

Что, если нам нужно сравнивать не только целые числа, но и числа с плавающей точкой? Реализовать это поможет перегрузка метода. Копипастим метод maxFinder в тот же класс, заменяем типы всех задействованных значений на double:

Имя метода не меняем! Это и есть перегрузка: компилятор сам выберет, какую из версий метода использовать — в зависимости от того, значения какого типа сравниваем.

Ключевое слово this в методах Java

Ключевое слово this позволяет ссылаться на экземпляры класса: их переменные, методы и конструкторы. Используют this только внутри метода или конструктора экземпляра. Например, вот так можно связать входные параметры метода с одноименными параметрами конкретного экземпляра класса:

Ещё пример — вызов одного конструктора из другого:

Это называется «явный вызов конструктора».

Абстрактные методы в Джаве

Абстрактным называют метод, который объявлен без реализации — он не имеет ни тела, ни даже фигурных скобок. Перед именем такого метода ставят модификатор abstract:

Зачем он такой нужен? В качестве шаблона для других методов из других классов. Вот есть у нас абстрактный класс «Строение», а в нём — абстрактный метод «возвести». Реализовывать эти абстракции нужно через несколько неабстрактных классов-наследников и их методы. Пример: класс «Хижина» — метод «стройХижину», класс «Мост» — метод «стройМост» и др.

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

Кроме этого, рекомендуем помотреть вебинар по введению в ООП на Java, где также будет рассматриваться работа с методами и конструкторами.

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

А более подробно лучше конечно прочитать документацию по тем ссылкам которые указывались ранее.

Комментировать
331 просмотров
Комментариев нет, будьте первым кто его оставит

Это интересно
No Image Компьютеры
0 комментариев
No Image Компьютеры
0 комментариев
No Image Компьютеры
0 комментариев
No Image Компьютеры
0 комментариев