Как да се опише класа и подкласа на програмиране, уроци и примери

Глава 2. обектно-ориентираното програмиране в Java

Как да се опише класа и подкласа

Така че, дефиницията на клас започва с класа на думата, следвана от името на класа е писано. Договор "Код Конвенции" препоръчват да се започне име на клас с главна буква.

Преди клас дума може да пише модификатори клас (клас модификатори). Това е една от думите, обществени, абстрактен, окончателен, strictfp. Преди да може да се доставя на името на вложено клас, в допълнение, модификатори на защитени, частни, статична. Модификатори ние ще представим като изучаването на чужди езици.

Тялото на класа, която в произволен ред изброява полета, методи, вложени класове и интерфейси, оградена със скоби.

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

Описание на полето може да започне с една или повече допълнителни модификатори обществени, защитена, лично, статичен, окончателен, преходно, летливи. Ако трябва да сложите няколко модификатори, след това да ги изброят JLS препоръчва, в този ред, тъй като някои компилатори изискват определен ред на записване модификатори. С модификатори ще се срещнем, колкото е необходимо.

Когато се описва метода, се посочва видът на стойност връщане или думата празнотата. последвано от интервал, името на метод, и след това, в скоби, списъка на параметрите. След това признаци, извършени по метода в скоби.

Описание на метода може да започне с обществеността на модификатори, защитена, частни, абстрактен, статичен, окончателен, синхронизирани, роден, strictfp. Ние ще ги въведете, ако е необходимо.

В списъка с параметри, разделени със запетая, и всеки тип на името на параметъра. Преди да напишете някакъв параметър може да бъде окончателно модификатор. Този параметър не може да се промени в метода. Списъкът с параметър може да се пропусне, но скобите са запазени.

Преди началото на метода за всеки параметър се разпределя RAM клетка, в която параметър се копира, като се позовава на предварително определен метод. Този процес се нарича трансфер параметър значение.

Обявата 2.1 показва как да се осигури метод за намиране на разполовяване на основата на нелинейно уравнение на Фигура 1.5.

Обявата 2.1. Намирането корени на нелинейни уравнения от bisektsyi

частен статичен двойно крайния EPS = ле-8; // константа

частен двойно а = 0,0, б = 1.5, корен; // частни ниви

обществен двойно getRoot (> // метод за достъп

частен двойно е (двойна х)

върне х * х * х - 3 * х * х + 3; // или нещо друго

частен невалидни разполовявам ()

// метод работи с например полета

двойно у = 0,0; // локална променлива - не на полето

корен = 0.5 * (А + В); Y = F (основа);

ако (Math.abs (у)

// Коренът е намерена. Извън линия

// Ако краищата на сегмента [а; корен]

// функция има различни признаци:

ако (е (а) * Y <0.0> б = корен;

// означава корен тук

// Ние прехвърля точка към точка б корен

// В противен случай:

// сега като точка А до точка корен

// продължи до [а; B] не се превърне малък

> Въпреки (Math.abs (Ь-а)> = EPS);

публично статично невалидни основни (String [] опцията)

Bisection2 b2 = нов Bisection2 ();

b2.getRoot () + // писмено горната чрез метод за достъп

В описанието на е () метод запазена стара, процесуално стил: метод получава аргумент, обработва и връща резултата. Описание на метода на разделям се извършва в духа на ООП: методът е активен, той се насочва към Б2 полета инстанция и той поставя резултата в желаното поле. разполовявам метод () - това е вътрешен механизъм на един клас Bisection2, така че тя е затворена (частни).

Метод Име, броя и вида на параметри, които метода на подпис (подпис). Компилаторът отличава методи не са от техните имена и подписите. Това ви позволява да записвате различни методи със същото име, различен брой и / или видове параметри.

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

Например, в един клас на автомобилни записахме метод moveTo (междинно съединение X, Int у). определяне на дестинация на географските координати. Можете също така да определите метода на moveTo (низ дестинация), за да определят географското име на вашата дестинация и се отнасят към него, както следва:

Това дублиране техника, наречена от претоварване (претоварване). Претоварване методи е много удобен за използване. Не забравяйте, в Глава 1, получаваме данни от всякакъв вид на екрана от printin (), без да се притеснявате за детайлите на точно вида получаваме. В действителност, ние използват различни методи за тон printin същото име. без дори да мисля за това. Разбира се, всички тези методи трябва да се планира внимателно предварително и е описано в този клас. Това се прави с PrintStream клас, където около двадесет методи за печат () и println ().

Ако пишете на метода със същото име в подклас, например:

клас камион простира Automobile

невалидни moveTo (междинно съединение X, Int у)

надделява метода на суперкласа. Определяне инстанция на Камиона на класа. например:

Камион Gazel = нов камион ();

и определяне gazei.moveTo (25, 150). ние се обръщаме към класа на метод камион. Там ще замени метод (висш).

Когато замените правата за достъп до този метод може да се разшири само. Публична метод обществен трябва да остане отворена, сигурна защита може да се отвори.

Възможно ли е да се прилага в рамките на подклас на суперкласа метод? Да, можете, ако посочите името на метода, думата супер. например, super.moveTo (30, 40). Можете да укажете името на метода и записани в един и същи клас, казват това. например, this.moveTo (50, 70). но в този случай това е излишно. Също така, можете да посочите и имената съвпадение на полето и не само методи.

Тези изменения са подобни на начина, по който говори за себе си: "Аз", а не "Иван", а казват "баща" вместо "Петър Sidorovich".

Особени методи води до интересни резултати. В клас описваме метод Pet глас (). отменят в подклас и използване в припева на класна стая. както е показано в Пример 2.2.

Обявата 2.2. Пример полиморфна метод

абстрактен клас за домашни любимци

абстрактно нищожен глас ();

клас Dog се простира Pet