Языки программирования
<<  Основы программирования на языке Java Основы программирования на языке Java  >>
Картинок нет
Картинки из презентации «Основы программирования на языке Java» к уроку информатики на тему «Языки программирования»

Автор: Vsevolod. Чтобы познакомиться с картинкой полного размера, нажмите на её эскиз. Чтобы можно было использовать все картинки для урока информатики, скачайте бесплатно презентацию «Основы программирования на языке Java.ppt» со всеми картинками в zip-архиве размером 207 КБ.

Основы программирования на языке Java

содержание презентации «Основы программирования на языке Java.ppt»
Сл Текст Сл Текст
1Основы программирования на языке Java. 46Запрещенные комбинации: два из public,
Средства ООП Java. (С) Всеволод Рылов, все protected, private abstract с любым из:
права защищены. 1. Новосибирск, 2004. private, static, final, native, strictfp,
2Ключевые слова – статус. Ключевые synchronized native strictfp. 46. (С)
слова, которые уже известны на текущий Всеволод Рылов, все права защищены.
момент: abstract default if private this Новосибирск, 2004.
boolean do implements protected throw 47Абстрактные методы. Абстрактный метод
break double import public throws byte определяет сигнатуру и список
else instanceof return transient case выбрасываемых исключений для метода,
extends int short try catch final который должен быть реализован ниже по
interface static void char finally long иерархии наследования Абстрактный класс
strictfp volatile class float native super может перегружать метод, оставляя (или
while const for new switch continue goto делая) его абстрактным и сохраняя его
package synchronized. 2. (С) Всеволод сигнатуру. При этом может измениться
Рылов, все права защищены. Новосибирск, список выбрасываемых исключений. class
2004. BufferEmpty extends Exception {…} class
3Виды переменных. Переменные классов BufferError extends Exception {…} public
(class variable - переменная-член interface Buffer { char get() throws
объявленная static ) переменные экземпляра BufferEmpty, BufferError; } public
(instance variable – переменная-член abstract class InfiniteBuffer implements
класса объявленная без static) компоненты Buffer { abstract char get() throws
массивов: int ia[] = new int[3]; ia[0] BufferError; }. 47. (С) Всеволод Рылов,
параметры методов: void dosome(int i, все права защищены. Новосибирск, 2004.
object o) {…} параметры конструкторов: 48Осторожность при перегрузке. Abstract
myclass(object param) {…} параметры class point { int x, y; public abstract
перехватчиков исключений: catch(exception string tostring(); } class coloredpoint
ex) {…} локальные переменные, объявленные extends point { int color; public string
внутри методов, блоков, и в операторе for. tostring() { //ошибка – вызов абстрактного
3. (С) Всеволод Рылов, все права защищены. метода: return super.Tostring() + ":
Новосибирск, 2004. color " + color; } }. 48. (С)
4Модификатор final. void unflow(boolean Всеволод Рылов, все права защищены.
flag) { final int k; if (flag) { k = 3; Новосибирск, 2004.
System.out.println(k); } if (!flag) { k = 49Модификаторы метода (продолжение). В
4; System.out.println(k); } } статическом методе не может использоваться
//compile-time error! void unflow(boolean ссылка this Ссылки super и this могут
flag) { final int k; if (flag) { k = 3; использоваться только в методах объекта
System.out.println(k); } else { k = 4; (т.е. методах, не объявленных static)
System.out.println(k); } } // all ok. Метод, объявленный final, не может быть
Переменная объявленная final может быть перегружен в классах-наследниках. Никакой
проинициализирована ровно один раз, после метод класса, объявленного final не может
этого ее значение изменить нельзя. Если быть перегружен (так как такой класс не
ссылка объявлена с модификатором final, то может иметь наследников) и, таким образом,
это не значит, что нельзя изменить все его методы являются final По своей
состояние объекта на который она сути метод, объявленный private является
ссылается! Нельзя изменить лишь саму final Компилятор или оптимизатор могут
переменную ссылочного типа. 4. (С) использовать «inline» подстановку для
Всеволод Рылов, все права защищены. final и private методов, тем самым
Новосибирск, 2004. увеличивая скорость исполнения программы.
5Объекты и значения ссылочного типа. 49. (С) Всеволод Рылов, все права
Объекты - экземпляры классов (class защищены. Новосибирск, 2004.
instance) и массивы. 50Модификаторы метода (продолжение).
ClassInstanceCreationExpression: new Native методы используются для реализации
ClassOrInterfaceType ( ArgumentListopt ) их тела в платформенно-зависимой
ClassBodyopt Primary.new Identifier ( библиотеке, написанной на языке C, C++,
ArgumentListopt ) ClassBodyopt fortran и т.Д. Пример: файл производного
ArgumentList: Expression ArgumentList , доступа package java.Io; public class
Expression. //Создание объектов – randomaccessfile implements dataoutput,
экземпляров классов class MyClass datainput { . . . public native void
implements MyInterface {…} MyClass myObj = open(string name, boolean writeable)
new MyClass(); MyInterface anotherObj = throws ioexception; public native int
new MyClass(“parameter”); MyClass reflObj readbytes(byte[] b, int off, int len)
= throws ioexception; public native void
(MyClass)Class.forName(“MyClass”).newInsta writebytes(byte[] b, int off, int len)
ce(); 5. (С) Всеволод Рылов, все права throws ioexception; public native long
защищены. Новосибирск, 2004. getfilepointer() throws ioexception;
6Операции над ссылками. доступ к полю: public native void seek(long pos) throws
obj.x = 10; super.y = 20; вызов метода: ioexception; public native long length()
obj.doSome(); super.doAnother(); throws ioexception; public native void
преобразование типа: (Object)obj строковый close() throws ioexception; }. 50. (С)
оператор + : String s = “one” + obj; Всеволод Рылов, все права защищены.
//вызывается метод obj.toString(); Новосибирск, 2004.
оператор проверки типа instanceof: if (obj 51Модификаторы метода (окончание).
instanceof MyClass) {…} //Проверяется тип synchronized методы используются для
obj операторы сравнения ссылок == и !=: if реализации синхронных классов-серверов
(obj == obj2 && obj != obj3) {…} (Параллелизм: класс-сервер может быть
условный тернарный оператор ? : obj = ( последовательным, защищенным или
obj2.size() < obj3.size() ) ? obj2: синхронным) strictfp определяет метод, в
obj3; 6. (С) Всеволод Рылов, все права котором все вычисляемые выражения float и
защищены. Новосибирск, 2004. double будут FP-strict. Это значит, что
7Объекты – массивы: грамматика. все промежуточные результаты вычисления
ArrayCreationExpression: new PrimitiveType выражения будут являться элементами
DimExprs Dimsopt new TypeName DimExprs множества float и double языка java и не
Dimsopt new PrimitiveType Dims могут принадлежать к расширенному набору
ArrayInitializer new TypeName Dims float или double, которые может
ArrayInitializer DimExprs: DimExpr предоставлять конкретная платформа для
DimExprs DimExpr. DimExpr: [ Expression ] обеспечения высокой точности вычисления
Dims: [ ] Dims [ ]. Индексация элементов выражений с плавающей точкой. При этом
массива начинается с 0 а не с 1 !!! всегда будет происходит приведение
Диапазон допустимых значений индекса – от промежуточного результата к элементу
0 до length - 1. 7. (С) Всеволод Рылов, множества float или double, либо возникнет
все права защищены. Новосибирск, 2004. переполнение. 51. (С) Всеволод Рылов, все
8Создание и инициализация массивов. // права защищены. Новосибирск, 2004.
Создание массивов примеры: // Создание 52Выбрасываемые исключения. Список
объекта – массива из трех ссылок на throws определяет исключения, которые
объекты типа MyClass MyClass array[] = new должны обрабатываться при вызове метода
MyClass[3]; // Инициализация элемента (checked exceptions) Throws: throws
массива (ссылки): array[0] = new ClassTypeList ClassTypeList: ClassType
MyClass(); // Создание объекта – массива ClassTypeList , ClassType Класс,
из двух ссылок на объекты-массивы //ссылок объявленный в списке throws должен быть
на объекты класса MyClass MyClass наследником класса Throwable или самим
array2[][] = new MyClass[2][]; // классом Throwable Классы-наследники
Инициализация элементов 0 и 1 массива RuntimeException можно не объявлять в
array2 array2[0] = new MyClass[5]; списке throws Классы-наследники Error
//объект – массив из 5 ссылок array2[1] = используются для сигнализации о сбое
new MyClass[4]; //объект – массив из 4 машины и не должны использоваться в
ссылок // Объект - массив из трех прикладном коде Метод, перегружающий метод
элементов типа int int array3[] = new родительского класса или реализующий метод
int[3]; array3[0] = 0; // Создание и интерфейса не может «расширять» список
инициализация массива из четырех элементов throws (may not be declared to throw more
int int array4 [] = new int [] {1,2,3,4}; checked exceptions). 52. (С) Всеволод
// Создание и инициализация Рылов, все права защищены. Новосибирск,
объекта-массива ссылок на объекты //класса 2004.
MyClass MyClass array5[] = {new 53Тело метода. MethodBody: Block ;
MyClass(“a”), new MyClass(“b”)}; 8. (С) Метод, не объявленный как abstract или
Всеволод Рылов, все права защищены. native должен иметь тело, являющееся
Новосибирск, 2004. блоком Метод, объявленный void не может
9Особенности использования массивов. содержать оператор вида return Expression;
Члены объектов-массивов: public final int Метод, объявленный с возвращаемым типом
length это поле содержит длину массива Type должен содержать выражение вида
public Object clone() – создает копию return Expression; на каждой возможной
массива + все методы класса Object. Любой ветви завершения метода. При этом тип
массив можно привести к классу Object или результата вычисления выражения Expression
к массиву совместимого типа. class Test { должен быть совместимым с типом Type В
public static void main(String[] args) случае, если возможная ветвь метода
throws Throwable { int ia[][] = { { 1 , завершается явным выбросом исключения,
2}, null }; int ja[][] = (int[][]) выражение return Expression; может быть
ia.clone(); System.out.print( (ia == ja) + опущено. 53. (С) Всеволод Рылов, все права
" "); System.out.println(ia[0] защищены. Новосибирск, 2004.
== ja[0] && ia[1] == ja[1]); } } 54Перегрузка методов (Overriding).
// this program prints: false true. 9. (С) Перегрузка методов экземпляра (не
Всеволод Рылов, все права защищены. статических методов): Метод m1 класса C
Новосибирск, 2004. перегружает метод m2 класса A с той же
10Особенности использования массивов. сигнатурой, тогда и только тогда, когда:
class Point { int x, y; } class Класс C является наследником класса A либо
ColoredPoint extends Point { int color; } m2 не является private и доступен из C m1
class Test { public static void перегружает m3, который перегружает m2 и
main(String[] args) { ColoredPoint[] cpa = отличен от m1 и m2 Если m1 не является
new ColoredPoint[10]; Point[] pa = cpa; abstract, то говорят что он реализует
System.out.println(pa[1] == null); try { абстрактные методы, которые перегружает.
pa[0] = new Point(); } catch Для доступа к перегруженному методу
(ArrayStoreException e) { используется super Приведение к типу
System.out.println(e); } } }. 10. (С) суперкласса содержащего объявление
Всеволод Рылов, все права защищены. перегруженного метода не обеспечивает
Новосибирск, 2004. вызов этого метода (виртуальный
11Классы. Классы объявляют новый полиморфизм) в отличие от обеспечения
ссылочный тип и определяют его реализацию доступа к сокрытым переменным static,
Вложенный (nested) класс – это класс private, final методы не могут быть
объявленный внутри другого класса или перегружены. 54. (С) Всеволод Рылов, все
интерфейса (в том числе класс объявленный права защищены. Новосибирск, 2004.
внутри метода или блока): member class – 55Сокрытие методов (Hiding). Если класс
объявленный внутри класса local class – декларирует статический метод, то этот
объявленный внутри метода anonymous class метод скрывает методы с той же сигнатурой
– не имеющий имени Верхнеуровневый объявленные в его суперклассах Для доступа
(top-level) класс – это класс, не к сокрытому методу можно использовать
являющийся вложенным Именованные (named) выражение со словом super, либо
классы могут быть абстрактными. 11. (С) квалифицированное имя, либо приведение к
Всеволод Рылов, все права защищены. типу класса в котором этот метод объявлен.
Новосибирск, 2004. В этом случае сокрытые методы ведут себя
12Классы. Каждый класс кроме Object также как и сокрытые поля Статический
является наследником другого класса и метод не может скрывать метод экземпляра
может реализовывать (implements) (не являющийся статическим). 55. (С)
произвольное количество интерфейсов Тело Всеволод Рылов, все права защищены.
класса может содержать: члены (members): Новосибирск, 2004.
поля методы вложенные классы и интерфейсы 56Требования к перегрузке и сокрытию.
инициализаторы экземпляра статические Перегружаемые и скрываемые методы должны
инициализаторы конструкторы Видимость совпадать не только по сигнатуре но и по
членов и конструкторов регулируется возвращаемому значению Перегружающий или
модификаторами доступа public, private, перекрывающий метод должен иметь такой же,
protected. 12. (С) Всеволод Рылов, все либо более открытый уровень доступа:
права защищены. Новосибирск, 2004. public -> public protected ->
13Классы и наследование. Членами класса protected, public package(default) ->
являются унаследованные и определенные в package(default), protected, public
классе члены Вновь объявленные поля могут private методы не наследуются и не
скрывать поля суперклассов и перегружаются поэтому могут иметь
суперинтерфейсов Вновь объявленные методы совпадающую сигнатуру, но разные
могут скрывать, реализовывать или возвращаемые значения и не совместимые
перегружать методы, объявленные в списки throws на разных уровнях
суперклассе или суперинтерфейсе Вложенные абстракции. 56. (С) Всеволод Рылов, все
классы бывают статическими и внутренними права защищены. Новосибирск, 2004.
(inner), в зависимости от контекста в 57Наследование нескольких методов с
котором они объявлены (если в точке одинаковой сигнатурой. Наследование
объявления имеет смысл ссылка this – то нескольких методов с одинаковой сигнатурой
вложенный класс будет внутренним). 13. (С) не всегда приводит к ошибке. При этом
Всеволод Рылов, все права защищены. возможны следующие варианты: Если один из
Новосибирск, 2004. методов не является абстрактным, то: Если
14Методы. Методы описывают участки кода, этот метод static то возникает ошибка
которые могут быть вызваны с помощью времени компиляции Иначе этот метод
выражения вызова метода Метод класса реализует (implements) или перегружает все
исполняется в контексте переменных класса унаследованные методы. Если при этом
(static context) Метод экземпляра выявляется несовместимость по
исполняется в контексте конкретного возвращаемому значению или списку
объекта, доступного по this Методы не исключений, то возникает ошибка времени
имеющие реализации должны быть объявлены компиляции Если метод абстрактный, то и
abstract Допускается перегрузка методов по класс является абстрактным и при этом
списку и типам аргументов Метод может говорят что данный метод перегружает все
иметь платформенно-зависимую реализацию унаследованные методы. При этом также
(native method). 14. (С) Всеволод Рылов, проверяется совместимость по возвращаемому
все права защищены. Новосибирск, 2004. значению и списку выбрасываемых исключений
15Статический контекст. 15. (С) Всеволод В языке java не может возникнуть ситуация,
Рылов, все права защищены. Новосибирск, когда два из наследуемых методов с
2004. одинаковой сигнатурой не являются
16Конструкторы и инициализаторы. абстрактными (т.к. одиночное
Инициализаторы экземпляра – блоки кода {…} наследование). 57. (С) Всеволод Рылов, все
выполняемые при инициализации объекта. права защищены. Новосибирск, 2004.
Выполняются перед вызовом конструктора. 58Overloading, Overriding, and Hiding.
Статические инициализаторы – статические class Point { int x = 0, y = 0; int color;
блоки кода static {…} выполняемые при void move(int dx, int dy) { x += dx; y +=
первом использовании класса (после его dy; } } class RealPoint extends Point {
загрузки но перед созданием первого float x = 0.0f, y = 0.0f; // hiding x and
объекта или доступом к полю) Конструкторы y // overriding move void move(int dx, int
в отличие от методов не могут быть вызваны dy) { move((float)dx, (float)dy); }
непосредственно с помощью выражения вызова //overloading move void move(float dx,
метода. Конструкторы вызываются при float dy) { x += dx; y += dy; } }. 58. (С)
создании экземпляров объектов и могут быть Всеволод Рылов, все права защищены.
перегружены. 16. (С) Всеволод Рылов, все Новосибирск, 2004.
права защищены. Новосибирск, 2004. 59Некорректное перекрытие. class Point {
17Грамматика объявления класса. int x = 0, y = 0, color; void move(int dx,
ClassDeclaration: ClassModifiersopt class int dy) { x += dx; y += dy; } int getX() {
Identifier Superopt Interfacesopt return x; } int getY() { return y; } }
ClassBody ClassModifiers: ClassModifier class RealPoint extends Point { float x =
ClassModifiers ClassModifier 0.0f, y = 0.0f; void move(int dx, int dy)
ClassModifier: one of public protected { move((float)dx, (float)dy); } void
private abstract static final strictfp move(float dx, float dy) { x += dx; y +=
Super: //Определяет «прямой суперкласс» dy; } float getX() { return x; } float
extends ClassType Interfaces: //Определяет getY() { return y; } }. 59. (С) Всеволод
«прямые суперинтерфейсы» implements Рылов, все права защищены. Новосибирск,
InterfaceTypeList InterfaceTypeList: 2004.
InterfaceType InterfaceTypeList , 60Вызов перегруженных методов. class
InterfaceType. 17. (С) Всеволод Рылов, все Super { static String greeting() { return
права защищены. Новосибирск, 2004. "Goodnight"; } String name() {
18Пример объявления класса. public return "Richard"; } } class Sub
abstract class MyClass extends Parent extends Super { static String greeting() {
implements MyInterface, AnotherInterface { return "Hello"; } String name()
static { //Static initializer } { //Non { return "Dick"; } } class Test
static initializer } public MyClass() { { public static void main(String[] args) {
super(); //Вызов конструктора супер класса Super s = new Sub();
} }. 18. (С) Всеволод Рылов, все права System.out.println(s.greeting() + ",
защищены. Новосибирск, 2004. " +s.name() ); } } produces the
19Модификаторы объявления класса. public output: Goodnight, Dick. 60. (С) Всеволод
– класс доступен извне пакета. abstract – Рылов, все права защищены. Новосибирск,
класс является абстрактным (в нем есть 2004.
абстрактные методы) final – класс является 61Несоответствие списков исключений.
конечным в иерархии наследования. От него class BadPointException extends Exception
нельзя унаследовать другой класс strictfp { BadPointException() { super(); }
– для всех методов класса действуют BadPointException(String s) { super(s); }
правила строгой проверки арифметических } class Point { int x, y; void move(int
выражений во время вычислений Для dx, int dy) { x += dx; y += dy; } } class
вложенных(внутренних) классов CheckedPoint extends Point { void move(int
дополнительно действуют следующие dx, int dy) throws BadPointException { if
модификаторы: static – класс является ((x + dx) < 0 || (y + dy) < 0) throw
статическим (вложенный класс) protected – new BadPointException(); x += dx; y += dy;
к классу имеют доступ только классы } }. 61. (С) Всеволод Рылов, все права
наследники объемлющего класса или классы в защищены. Новосибирск, 2004.
том же пакете private – к классу имеет 62Интерфейсы. InterfaceDeclaration:
доступ только объемлющий класс. 19. (С) InterfaceModifiersopt interface Identifier
Всеволод Рылов, все права защищены. ExtendsInterfacesopt InterfaceBody
Новосибирск, 2004. InterfaceModifiers: InterfaceModifier
20Строгое определение абстрактного InterfaceModifiers InterfaceModifier
класса. Класс C является абстрактным, InterfaceModifier: one of public protected
если: C явно содержит объявление private abstract static strictfp Допустимо
абстрактного метода Какой-либо множественное наследование интерфейсов:
класс-родитель C содержит объявление ExtendsInterfaces: extends InterfaceType
абстрактного метода, который не был ExtendsInterfaces , InterfaceType Все
реализован в классе C или в его интерфейсы являются abstract protected,
родительских классах «Прямой static, private относятся только к
суперинтерфейс» C определяет или наследует членам-интерфейсам Глобальные (не
метод, который не реализован (и поэтому вложенные) интерфейсы являются public. 62.
является абстрактным) т.е. ни C ни его (С) Всеволод Рылов, все права защищены.
родительские классы не определяют Новосибирск, 2004.
реализацию этого метода. 20. (С) Всеволод 63Отношение наследования. Интерфейс I
Рылов, все права защищены. Новосибирск, напрямую зависит от типа T если T
2004. присутствует в списке extends интерфейса I
21Внутренние (inner) классы. Внутренний как родительский интерфейс, либо как
(inner) класс – это класс который ни явно, квалификатор в имени родительского
ни неявно не является static Внутренний интерфейса. Интерфейс I зависит от
класс не может содержать блоков ссылочного типа T если выполняется одно из
статической инициализации или условий: I напрямую зависит от T. I
членов-интерфейсов Внутренний класс не напрямую зависит от класса C который
может содержать статических членов за зависит от T. I напрямую зависит от
исключением полей-констант времени интерфейса J который зависит от T
компиляции Внутренние классы могут (применяя правило рекурсивно). Интерфейс K
наследовать статические члены, не является родительским (суперинтерфейсом)
являющиеся константами времени компиляции интерфейса I если выполняется одно из
Члены-интерфейсы всегда являются static по условий: K является прямым
умолчанию Вложенные классы могут свободно суперинтерфейсом I. Существует интерфейс J
содержать статические члены как и обычные такой что K является суперинтерфейсом J, и
классы Java. 21. (С) Всеволод Рылов, все J является суперинтерфейсом I, применяя
права защищены. Новосибирск, 2004. это правило рекурсивно Интерфейс I
22Пример вложенности классов. class называется подинтерфейсом (subinterface)
HasStatic { static int j = 100; } class интерфейса K, если K является
Outer { class Inner extends HasStatic { суперинтерфейсом I. 63. (С) Всеволод
static final int x = 3; //ok - Рылов, все права защищены. Новосибирск,
compile-time constant static int y = 4; 2004.
//compile-time error, an inner class } 64Тело и члены интерфейса.
static class NestedButNotInner{ static int InterfaceBody: {
z = 5; // ok, not an inner class } InterfaceMemberDeclarationsopt }
interface NeverInner{} // interfaces are InterfaceMemberDeclarations:
never inner }. 22. (С) Всеволод Рылов, все InterfaceMemberDeclaration
права защищены. Новосибирск, 2004. InterfaceMemberDeclarations
23Статический контекст. Выражение InterfaceMemberDeclaration
находится в статическом контексте, тогда и InterfaceMemberDeclaration:
только тогда, когда наиглубочайший ConstantDeclaration
включающий его метод, конструктор, блок AbstractMethodDeclaration ClassDeclaration
инициализации или инициализатор поля InterfaceDeclaration ; 64. (С) Всеволод
является статическим методом, статическим Рылов, все права защищены. Новосибирск,
инициализатором или инициализатором 2004.
статической переменной соответсвенно. 65Члены интерфейса. Членами интерфейса
Проще говоря, если в точке объявления являются: Члены, объявленные в интерфейсе
класса имеет семантику ссылка this на Члены унаследованные от прямых
объект объемлющего класса, то контекст суперинтерфейсов Если у интерфейса нет
объявления является динамическим (non прямых суперинтерфейсов, то интерфейс по
static) и класс будет внутренним. 23. (С) умолчанию (неявно) декларирует public
Всеволод Рылов, все права защищены. abstract метод m сигнатуры s,
Новосибирск, 2004. возвращаемого типа r, и списка исключенийt
24Immediately enclosing instance. для каждого public instance метода m
Внутренний класс C является сигнатуры s, возвращаемого типа r, и
непосредственным внутренним классом списка исключений t, объявленного в классе
(direct inner class of) класса O если O Object, кроме таковых объявленных явно в
непосредственно лексически включает класс этом интерфейсе. Если интерфейс
C, и декларация C не находится в декларирует метод с той же сигнатурой, но
статическом контексте. Класс C является с отличным типом возвращаемого значения
внутренним классом (inner class) класса O либо несовместимым списком исключений то
если это непосредственный внутренний класс будет ошибка компиляции. Интерфейс
класса O либо является внутренним классом наследует от интерфейсов, которые
внутреннего класса O. Класс O является расширяет (extends) всех членов этих
лексически объемлющим классом порядка 0 интерфейсов за исключением полей, классов,
(zeroth enclosing class of itself) для интерфейсов которые он скрывает(hides) и
самого себя. Класс O является лексически методов, которые перегружает(overrides).
объемлющим классом порядка n (nth 65. (С) Всеволод Рылов, все права
lexically enclosing class) класса C если защищены. Новосибирск, 2004.
он является непосредственным объемлющим 66Константные поля интерфейсов.
классом для лексически объемлющего класса ConstantDeclaration: ConstantModifiersopt
порядка n – 1 класса C. Экземпляр объекта Type VariableDeclarators
i непосредственного внутреннего класса C ConstantModifiers: ConstantModifier
класса O всегда связан с объектом класса ConstantModifiers ConstantModifer
O, известным как непосредственно ConstantModifier: one of public static
объемлющий объект для i (the immediately final Фактически все поля интерфейса
enclosing instance of i). Непосредственно являются public static final константами.
объемлющий объект, если таковой имеется, Декларация данных спецификаторов является
связывается с объектом при его создании. избыточной. В случае если интерфейс
Объект o является лексически объемлющим унаследует два и более поля с одинаковыми
объектом порядка 0 (zeroth lexically именами от своих суперинтерфейсов, ошибка
enclosing instance) самого себя. Объект o времени компиляции будет иметь место
является лексически объемлющим объектом только при попытке обращения к этим полям
порядка n для объекта i, если он является по простому имени (без полной
непосредственно объемлющим объектом для квалификации). 66. (С) Всеволод Рылов, все
лексически объемлющего объекта порядка n – права защищены. Новосибирск, 2004.
1 объекта i. 24. (С) Всеволод Рылов, все 67Инициализация полей интерфейсов.
права защищены. Новосибирск, 2004. Каждое поле в теле интерфейса должно быть
25Immediately enclosing instance. проинициализировано выражением, значение
Анологично, если суперкласс S класса C которого должно быть вычислено на стадии
является непосредственным внутренним компиляции. При этом возможно
классом класса SO, то существует экземпляр использование в выражении уже
SO, связанный с объектом i класса C, проинициализированных полей самого
известный как непосредственно объемлющий интерфейса или его суперинтерфейсов. Поля
экземпляр по отношению к S (the инициализируются в порядке их декларации
immediately enclosing instance of i with за исключением полей, явно
respect to S). Непосредственно объемлющий инициализируемых константами. В выражениях
экземпляр объекта по отношению к его инициализации нельзя использовать ключевые
прямому суперклассу, если таковой имеет слова this и super кроме случая если эти
место быть, определяется в момент вызова слова используются внутри декларации тела
конструктора суперкласса посредством анонимного класса реализующего интерфейс.
вызова конструктора суперкласса по interface Test { float f = j; //error – j
умолчанию. Когда внутренний класс используется до объявления int j = 1; int
ссылается на переменную экземпляра k = k+1; //error – k инициализируется с
являющуюся членом лексически объемлющего использованием k }. 67. (С) Всеволод
класса, используется переменная (поле) Рылов, все права защищены. Новосибирск,
соответствующего лексически объемлющего 2004.
объекта. Неинициализированное final поле 68Неоднозначность при наследовании.
объемлющего класса не может быть interface BaseColors { int RED = 1, GREEN
использовано в контексте внутреннего = 2, BLUE = 4; } interface RainbowColors
класса. Любая локальная переменная, extends BaseColors { int YELLOW = 3,
формальный параметр метода, или параметр ORANGE = 5, INDIGO = 6, VIOLET = 7; }
перехватчика исключения используемые во interface PrintColors extends BaseColors {
внутреннем классе, но объявленные в int YELLOW = 8, CYAN = 16, MAGENTA = 32; }
объемлющем, должны быть объявлены со interface LotsOfColors extends
спецификатором final, и должны быть явно RainbowColors, PrintColors { int FUCHSIA =
проинициализированы до их использования в 17, VERMILION = 43, CHARTREUSE = RED+90;
теле внутреннего класса. 25. (С) Всеволод }. 68. (С) Всеволод Рылов, все права
Рылов, все права защищены. Новосибирск, защищены. Новосибирск, 2004.
2004. 69Декларация абстрактных методов.
26Пример – ограничение доступа. class AbstractMethodDeclaration:
Outer { int i = 100; static void AbstractMethodModifiersopt ResultType
classMethod() { final int l = 200; class MethodDeclarator Throwsopt ;
LocalInStaticContext { int k = i; // AbstractMethodModifiers:
compile-time error int m = l; // ok } } AbstractMethodModifier
void foo() { class Local { // a local AbstractMethodModifiers
class int j = i; } } }. 26. (С) Всеволод AbstractMethodModifier
Рылов, все права защищены. Новосибирск, AbstractMethodModifier: one of public
2004. abstract Фактически все методы интерфейса
27Пример – глубокая вложенность. class являются public abstract, и использование
WithDeepNesting { boolean toBe; данных спецификаторов является избыточным
WithDeepNesting(boolean b) { toBe = b;} Будьте осторожны при наследовании
class Nested { boolean theQuestion; class интерфейсом от своих суперинтерфейсов
DeeplyNested { DeeplyNested(){ theQuestion методов с одинаковой сигнатурой но
= toBe || !toBe; } } } }. Каждый экземпляр несовместимыми возвращаемыми значениями
WithDeepNesting.Nested.DeeplyNested имеет или throws clauses Все члены-классы и
объемлющий объект класса члены-интерфейсы, объявленные в
WithDeepNesting.Nested (его интерфейсе, являются static public по
непосредственно объемлющий объект) и умолчанию и не могут быть внутренними
объемлющий объект – экземпляр класса (inner). 69. (С) Всеволод Рылов, все права
WithDeepNesting (объемлющий объект ранга защищены. Новосибирск, 2004.
2). 27. (С) Всеволод Рылов, все права 70Анонимные классы. public interface
защищены. Новосибирск, 2004. MyInterface { void doIt(); } public
28Суперклассы и подклассы. Класс C abstract class MyAbstractClass { int i,j;
является суперклассом класса A если верно public MyAbstractClass (int i, int j) {
одно из следующих утверждений: A является this.i = i; this.j = j;} public abstract
непосредственным подклассом C. Существует void doAnother(); } //Использование: …
класс B такой , что A является подклассом MyInterface impl = new MyInterface() {
B, и B является подклассом C, применяя это void doIt() {
правило рекурсивно. class Point { int x, System.out.println(“Hello!”); } };
y; } class ColoredPoint extends Point { impl.doIt(); 70. (С) Всеволод Рылов, все
int color; } final class Colored3dPoint права защищены. Новосибирск, 2004.
extends ColoredPoint { int z; }. Класс 71public class Main { public static void
Point является суперклассом класса main(String[] args) { MyInterface
ColoredPoint. Класс Point является myInterfaceImpl = new MyInterface () {
суперклассом класса Colored3dPoint. Класс public void doIt () {
ColoredPoint является подклассом класса System.out.println("Hello!"); }
Point. Класс ColoredPoint является }; myInterfaceImpl.doIt();//prints: Hello!
суперклассом класса Colored3dPoint. Класс MyAbstractClass myAbstractImpl = new
Colored3dPoint является подклассом класса MyAbstractClass() { public void
ColoredPoint. Класс Colored3dPoint doAnother() {
является подклассом класса Point. 28. (С) System.out.println("Hello again!
Всеволод Рылов, все права защищены. "+i+" "+j); } };
Новосибирск, 2004. MyAbstractClass myAbstractImpl2 = new
29Зависимость между классами. Классы и MyAbstractClass(5,6) { public void
интерфейсы зависят по загрузке от других doAnother() {
типов (классов и интерфейсов), приведенных System.out.println("Hello again!
в декларации наследования (extends и "+i+" "+j); } };
implements) Зависимость типов друг от myAbstractImpl.doAnother(); //prints:
друга может формировать цепочку: A зависит Hello again! 0 0
от B, B зависит от C тогда A зависит от C. myAbstractImpl2.doAnother(); //prints:
class B implements C {…} class A extends B Hello again! 5 6 } }. 71. (С) Всеволод
{…} … A theA = new A(); // Будут загружены Рылов, все права защищены. Новосибирск,
интерфейс C и //классы B и A Циклические 2004.
зависимости вызывают ошибку времени 72Перечисления (enum), начиная с java
компиляции: class Point extends 1.5. В отличие от статических констант,
ColoredPoint { int x, y; } class предоставляют типизированный, безопасный
ColoredPoint extends Point { int color; } способ задания фиксированных наборов
Если цикл обнаружен во время исполнения значений Являются классами специального
программы и загрузки классов в JVM, то вида, не могут иметь наследников, сами в
выбрасывается ошибка свою очередь наследуются от
ClassCircularityError. 29. (С) Всеволод java.lang.Enum. Не могут быть абстрактными
Рылов, все права защищены. Новосибирск, и содержать абстрактные методы, но могут
2004. реализовывать интерфейсы Экземпляры
30Суперинтерфейсы класса. объектов перечисления нельзя создать с
Суперинтерфейсами (родительскими помощью new, каждый объект перечисления
интерфейсами) для класса являются: Прямые уникален, создается при загрузке
суперинтерфейсы (объявленные implements) перечисления в виртуальную машину, поэтому
Суперинтерфейсы прямых суперинтерфейсов допустимо сравнение ссылок для объектов
Суперинтерфесы родительского класса перечислений, можно использовать switch
Говорят, что класс реализует все свои Как и обычные классы могут реализовывать
суперинтерфейсы У класса может быть поведение, содержать вложенные и
несколько прямых суперинтерфейсов: внутренние классы-члены. 72. (С) Всеволод
interface One { void doIt();} interface Рылов, все права защищены. Новосибирск,
Two { void doIt(); void doAnother();} 2004.
class MyClass implements One, Two { void 73Пример. public enum Days { SUNDAY,
doIt() {} //Общая реализация для One и Two MONDAY, TUESDAY, WEDNESDAY, THURSDAY,
void doAnother{} }. 30. (С) Всеволод FRIDAY, SATURDAY; public boolean
Рылов, все права защищены. Новосибирск, isWeekend() { switch(this) { case SUNDAY:
2004. case SATURDAY: return true; default:
31Грамматика объявления тела класса. return false; } } } … System.out.println(
ClassBody: { ClassBodyDeclarationsopt } Days.MODAY+” isWeekEnd(): “ +
ClassBodyDeclarations: Days.MONDAY.isWeekend() ); 73. (С)
ClassBodyDeclaration ClassBodyDeclarations Всеволод Рылов, все права защищены.
ClassBodyDeclaration ClassBodyDeclaration: Новосибирск, 2004.
ClassMemberDeclaration InstanceInitializer 74Перечисления (продолжение). Каждый
StaticInitializer ConstructorDeclaration класс перечисления неявно содержит
ClassMemberDeclaration: FieldDeclaration следующие методы: values() - возвращает
MethodDeclaration ClassDeclaration массив элементов перечисления (статический
InterfaceDeclaration ; 31. (С) Всеволод метод) ordinal() - возвращает порядковый
Рылов, все права защищены. Новосибирск, номер элемента перечисления (в порядке
2004. декларации) valueOf(String name) –
32Члены класса. Областью видимости члена возвращает элемент перечисления по его
m, объявленного или унаследованного строковому имени (статический метод,
классом C, является тело класса C, включая выбрасывает IllegalArgumentException если
тела всех типов объявленных внутри C. Если нет элемента с указанным именем) Класс
C сам по себе является вложенным классом, перечисления может иметь конструктор
то объявления одноименных членов (полей, (private либо package), который вызывается
методов или типов) m в объемлющих областях для каждого элемента при его декларации
видимости (блоках, классах или пакете) Отдельные элементы перечисления могут
будут сокрыты данным членом m класса С. реализовывать свое собственное поведение.
Членами класса являются: Члены, 74. (С) Всеволод Рылов, все права
унаследованные от его прямого суперкласса защищены. Новосибирск, 2004.
(исключением является класс Object не 75Пример более сложного перечисления.
имеющий суперклассов) Члены, public enum Direction { FORWARD(1.0) {
унаследованные от его прямых public Direction opposite() {return
суперинтерфейсов Члены, объявленные в теле BACKWARD;} }, BACKWARD(2.0) { public
класса Члены класса объявленные private не Direction opposite() {return FORWARD;} };
наследуются подклассами. Конструкторы и private double ratio; Direction(double r)
инициализаторы не являются членами и не { ratio = r; } public double getRatio()
наследуются. 32. (С) Всеволод Рылов, все {return ratio;} public static Direction
права защищены. Новосибирск, 2004. byRatio(double r) { if (r == 1.0) return
33Пример наследования членов. class FORWARD; else if (r == 2.0) return
Point { int x, y; private Point() { BACKWARD; else throw new
reset(); } Point(int x, int y) { this.x = IllegalArgumentException(); } }. 75. (С)
x; this.y = y; } private void reset() { Всеволод Рылов, все права защищены.
this.x = 0; this.y = 0; } } class Новосибирск, 2004.
ColoredPoint extends Point { int color; 76Пакеты: организация java программ. В
void clear() { reset(); } // error – типичном случае программа состоит из
reset() is private } //error: нескольких пакетов Каждый пакет имеет
ColoredPoint() {super();} – default собственное пространство имен для типов
constructor class Test { public static объявленных в пакете Верхнеуровневый тип
void main(String[] args) { ColoredPoint c доступен извне пакета только если он
= new ColoredPoint(0,0);//error – объявлен со спецификатором public Пакеты
//ColoredPoint has no such constructor образуют иерархическую структуру имен.
c.reset(); //error – reset() is private } Членами пакета являются: классы и
}. 33. (С) Всеволод Рылов, все права интерфейсы, объявленные в единицах
защищены. Новосибирск, 2004. компиляции пакета подпакеты, которые имеют
34Наследование и доступ по умолчанию. свои собственные подпакеты и единицы
package points; public class Point3D компиляции Пакеты могут располагаться на
extends Point { int z; public void файловой системе или в базе данных Пакеты
move(int dx, int dy, int dz) { x += dx; y размещаемые на файловой системе имеют ряд
+= dy; z += dz; } }. package points; ограничений на их организацию для
public class Point { int x, y; public void обеспечения однозначности при поиске и
move(int dx, int dy) { x += dx; y += dy; } загрузке (а также компиляции) типов (и
}. import points.*; class Point4D extends единиц компиляции) и пакета. 76. (С)
Point3D { int w; public void move(int dx, Всеволод Рылов, все права защищены.
int dy, int dz, int dw) { x+=dx; y+=dy; Новосибирск, 2004.
z+=dz; //error! w+=dw; } }. import 77Пакеты: организация программ. При
points.*; class Point4D extends Point3D { отображении (хранении) на файловой системе
int w; public void move(int dx, int dy, единица компиляции может содержать тоьлко
int dz, int dw) { super.move(dx,dy,dz); один тип объявленный public совпадающий по
//Good! w+=dw; } }. 34. (С) Всеволод имени с именем файла единицы компиляции.
Рылов, все права защищены. Новосибирск, 77. (С) Всеволод Рылов, все права
2004. защищены. Новосибирск, 2004.
35Поля-члены класса (грамматика). 78Единицы компиляции. Пакет содержит
FieldDeclaration: FieldModifiersopt Type несколько единиц компиляции Типы внутри
VariableDeclarators ; VariableDeclarators: единицы компиляции имеют доступ ко всем
VariableDeclarator VariableDeclarators , верхнеуровневым типам, объявленным в
VariableDeclarator FieldModifiers: других единицах компиляции данного пакета
FieldModifier FieldModifiers FieldModifier а также к типам пакета java.lang Для
FieldModifier: one of public protected доступа к другим пакетам используется
private static final transient volatile. декларация import CompilationUnit:
35. (С) Всеволод Рылов, все права PackageDeclarationopt
защищены. Новосибирск, 2004. ImportDeclarationsopt TypeDeclarationsopt
36Статические поля. class Point { int x, ImportDeclarations: ImportDeclaration
y, useCount; Point(int x, int y) { this.x ImportDeclarations ImportDeclaration
= x; this.y = y; } final static Point TypeDeclarations: TypeDeclaration
origin = new Point(0, 0); } class Test { TypeDeclarations TypeDeclaration. 78. (С)
public static void main(String[] args) { Всеволод Рылов, все права защищены.
Point p = new Point(1,1); Point q = new Новосибирск, 2004.
Point(2,2); p.x = 3; p.y = 3; 79Именованные и безымянные пакеты.
p.useCount++; p.origin.useCount++; Объявление именованного пакета:
System.out.println("(" + q.x + PackageDeclaration: package PackageName; В
"," + q.y + ")"); качестве имени пакета выступает полное
System.out.println(q.useCount); квалифицированное имя: например
System.out.println(q.origin == com.somecompany.project.one для First.java
Point.origin); Единицы компиляции безымянного пакета не
System.out.println(q.origin.useCount); } содержат объявление пакета Безымянные
}. 36. (С) Всеволод Рылов, все права пакеты следует использовать только в
защищены. Новосибирск, 2004. небольших тестовых программах Переменная
37Singleton (объект одиночка). Данный окружения CLASSPATH содержит точки
шаблон используется для обеспечение привязки иерархий пакетов к точкам в
единственности объекта определенного файловой системе (коими могут являться
класса public class Singleton { private директории и архивные jar или zip файлы)
static Singleton instance = null; private Классы находящиеся во всех «корневых»
Singleton(){} //никто не может вызвать директориях точек привязки CLASSPATH
конструктор //все должны использовать принадлежат к единому безымянному пакету.
данный метод для получения объекта public 79. (С) Всеволод Рылов, все права
static Singleton getInstance() { if защищены. Новосибирск, 2004.
(instance == null) { instance = new 80Декларация import. Декларация имени
Singleton(); } return instance; } }. 37. пакета распространяется на всю единицу
(С) Всеволод Рылов, все права защищены. компиляции Декларации import также
Новосибирск, 2004. распространяются на всю единицу компиляции
38Поля-члены, объявленные final. Для того чтобы получить доступ к членам
Переменные классов(static) и переменные подпакета в единице компиляции, нужно явно
экземпляров могут быть объявлены final импортировать эти члены. По умолчанию они
Статическая переменная, объявленная final не видны ImportDeclaration:
должна быть инициализирована SingleTypeImportDeclaration
непосредственно при объявлении либо в TypeImportOnDemandDeclaration import
блоке статической инициализации Переменная java.io.InputStream; // single type import
экземпляра, объявленная final должна быть declaration import java.net.*; // import
проинициализирована непосредственно при on demand declaration Будучи
объявлении либо в блоке инициализации, импортированными типы становятся доступны
либо ей должно быть присвоено значение к в единице компиляции с использованием
концу исполнения каждого конструктора. 38. простого (не квалифицированного) имени.
(С) Всеволод Рылов, все права защищены. 80. (С) Всеволод Рылов, все права
Новосибирск, 2004. защищены. Новосибирск, 2004.
39Модификаторы volatile и transient. 81Статический импорт (начиная с java
Переменные, объявленные transient не 1.5). Для того чтобы иметь возможность
являются частью persistent состояния обращаться к статическим методам, полям
объекта и не сохраняются во время класса, а также к элементам перечислений
сериализации. Для переменных, объявленных без использования квалифицированного
volatile, осуществляется синхронизация имени, можно воспользоваться статической
локальной и главной копий при каждом декларацией импорта: import static Days.*
обращении к значению переменной в ; import static java.lang.Math.*; … Day d
многопоточной среде. Class test { static = MONDAY; Day d2 = valueOf(“SATURDAY”);
int i = 0, j = 0; static void one() { i++; double v = sin(PI/2); Однако
j++; } static void two() { злоупотреблять статическим импортом не
system.Out.Println("i=" + i + стоит. 81. (С) Всеволод Рылов, все права
" j=" + j); } // может защищены. Новосибирск, 2004.
напечатать j } // большее, чем i. Class 82Сокрытие и конфликты import.
test { static volatile int i = 0, j = 0; Single-type-import декларация d в единице
static void one() { i++; j++; } static компиляции c пакета p импортирующая тип n,
void two() { скрывает: любой верхнеуровневый тип n,
system.Out.Println("i=" + i + объявленный в другой единице компиляции
" j=" + j); } // i всегда >= пакета p любой тип n импортированный
j !!! }. 39. (С) Всеволод Рылов, все права type-imoprt-on-demand декларацией в c
защищены. Новосибирск, 2004. нельзя импортировать пакет, можно
40Инициализация полей. Инициализация импортировать только типы: import
полей экземпляра происходит каждый раз при java.Util; - ведет к ошибке времени
создании нового объекта. Инициализация компиляции верхнеуровневые типы
статических полей класса происходит один объявленные внутри единицы компиляции, а
раз при первом использовании класса. При также вложенные типы скрывают типы,
инициализации поля экземпляра могут импортируемые type-import-on-demand
использовать статические поля, т.к. они декларацией, при использовании простого
гарантированно инициализированы к моменту имени. Для разрешения неоднозначности или
создания объекта При инициализации доступа к сокрытому типу можно
статические поля класса не могут воспользоваться квалифицированным именем.
использовать поля экземпляра, а также 82. (С) Всеволод Рылов, все права
ключевые слова this и super Инициализация защищены. Новосибирск, 2004.
полей происходит в порядке объявления и в 83«Странный» пример. package Vector;
порядке исполнения блоков инициализации. public class Mosquito { int capacity; }
Константы времени компиляции package strange.example; import
инициализируются первыми. Код java.util.Vector; import Vector.Mosquito;
конструкторов исполняется в последнюю class Test { public static void
очередь Стоит избегать зависимости от main(String[] args){
порядка инициализации полей. 40. (С) System.out.println(new
Всеволод Рылов, все права защищены. Vector().getClass());
Новосибирск, 2004. System.out.println(new
41Разрешение перекрытия полей. Для Mosquito().getClass()); } } Вывод: class
доступа к полям, перекрытым при java.util.Vector class Vector.Mosquito.
наследовании можно использовать super, а 83. (С) Всеволод Рылов, все права
также полную квалификацию (super.x или защищены. Новосибирск, 2004.
Point.x). class Point { static int x = 2; 84Двойная декларация. package test;
} class Test extends Point { static double import java.util.Vector; class Point { int
x = 4.7; public static void main(String[] x, y; } interface Point { // compile-time
args) { new Test().printX(); } void error #1 int getR(); int getTheta(); }
printX() { System.out.println(x + " class Vector { // compile-time error #2
" + super.x); } }. 41. (С) Всеволод Point[] pts; }
Рылов, все права защищены. Новосибирск, ------------------------------------------
2004. -------- package test; import java.util.*;
42Множественное перекрытие. При class Vector { Point[] pts; } // not a
множественном перекрытии необходимо error. 84. (С) Всеволод Рылов, все права
использовать полную квалификацию. защищены. Новосибирск, 2004.
interface Frob { float v = 2.0f; } class 85Опережающее использование. package
SuperTest { int v = 3; } class Test points; class Point { int x, y; //
extends SuperTest implements Frob { public coordinates PointColor color; // color of
static void main(String[] args) { new this point Point next; // next point with
Test().printV(); } void printV() { this color static int nPoints; } class
System.out.println((super.v + Frob.v)/2); PointColor { Point first; // first point
} }. 42. (С) Всеволод Рылов, все права with this color PointColor(int color) {
защищены. Новосибирск, 2004. this.color = color; } private int color;
43Грамматика объявления метода. Метод // color components } //all is OK! 85. (С)
определяет участок исполняемого кода, Всеволод Рылов, все права защищены.
который может быть вызван с передачей Новосибирск, 2004.
фиксированного количества параметров 86Правила именования пакетов. Для
определенного типа MethodDeclaration: обеспечения уникальности имени пакета в
MethodHeader MethodBody MethodHeader: качестве основы следует использовать
MethodModifiersopt ResultType доменное имя организации, например:
MethodDeclarator Throwsopt ResultType: ru.nsu.fit.mylastname.task1 В случае если
Type void MethodDeclarator: Identifer ( доменное имя не может быть использовано в
FormalParameterListopt ) В классе может силу наличия специальных символов,
быть объявлен метод, имя которого запрещенных к использованию в
совпадает с именем члена-поля, вложенного идентификаторах, нужно произвести
класса, интерфейса или другого метода следующую трансформацию: если имя содержит
(стоит избегать!!!). 43. (С) Всеволод знак ‘-’, его заменяют на ‘_’:
Рылов, все права защищены. Новосибирск, some-ware.com -> com.some_ware если имя
2004. является ключевым словом, то к нему
44Сигнатура метода. Методы класса должны добавляют ‘_’: do.something.com ->
различаться по своей сигнатуре. Сигнатура com.something.do_; если имя начинается с
метода определяется его именем, цифры, то спереди добавляется ‘_’:
количеством параметров и типами этих just.4you.com -> com._4you.just Примеры
параметров FormalParameterList: имен: com.sun.java.jag.scrabble
FormalParameter FormalParameterList , com.apple.quicktime.v2
FormalParameter FormalParameter: finalopt com.novosoft.siberon.someproject. 86. (С)
Type VariableDeclaratorId Всеволод Рылов, все права защищены.
VariableDeclaratorId: Identifier Новосибирск, 2004.
VariableDeclaratorId [ ] Имена параметров 87Полное квалифицированное имя. Полным
метода должны быть различны Список квалифицированным именем является: для
формальных параметров метода может быть примитивных типов – ключевое слово типа
пуст. 44. (С) Всеволод Рылов, все права для именованного пакета первого уровня –
защищены. Новосибирск, 2004. простое имя этого пакета для именованного
45Параметры метода. Во время вызова пакета уровня N – полное квалифицированное
метода вычисленные значения передаваемых имя объемлющего пакета плюс простое имя
аргументов используются для инициализации пакета: outer1.outer2.outerN-1.packagename
переменных-параметров метода Таким образом для класса или интерфейса в безымянном
всегда имеет место передача «по значению» пакете – простое имя этого класса или
Область видимости параметра ограничивается интерфейса полное квалифицированное имя
методом, в котором он объявлен. При этом класса или интерфейса в именованном пакете
доступ к нему осуществляется с помощью – это полное квалифицированное имя пакета
обычного имени. Параметры перекрывают плюс простое имя класса или интерфейса:
собой поля-члены класса, в котором outerpackage1...outerpackageN-1.packagenam
объявлен метод, содержащий эти параметры. .ClassName. 87. (С) Всеволод Рылов, все
Для доступа к перекрытым полям-членам права защищены. Новосибирск, 2004.
нужно использовать this либо полное 88Полное квалифицированное имя. класс
квалифицированное имя Параметры типов (интерфейс) – член другого класса имеет
double и float всегда содержат значения из полное квалифицированное имя только если
множества double и float соответственно. таковое имеется у класса его содержащего:
Они не могут принимать расширенных outerpackage1.….outerpackageN.OuterClass1.
значений появляющихся во время вычисления .OuterClassM.Member исключение –
выражений не являющихся strictfp. 45. (С) безымянные классы Полное квалифицированное
Всеволод Рылов, все права защищены. имя массива – это полное квалифицированное
Новосибирск, 2004. имя компонентного типа с последующим []
46Модификаторы метода. MethodModifiers: Примеры полностью квалифицированных имен:
MethodModifier MethodModifiers java.lang.Object java.util.Map.Entry int
MethodModifier MethodModifier: one of java.lang.String[]. 88. (С) Всеволод
public protected private abstract static Рылов, все права защищены. Новосибирск,
final synchronized native strictfp 2004.
Основы программирования на языке Java.ppt
http://900igr.net/kartinka/informatika/osnovy-programmirovanija-na-jazyke-java-228199.html
cсылка на страницу

Основы программирования на языке Java

другие презентации на тему «Основы программирования на языке Java»

«Французский язык» - Пуризм. Образование французского национального языка. История становления национального письменно-литературного французского языка. Французский по своему происхождению, по природе равен латинскому. Проблема происхождения языка и его истории. Происхождение языков одинаково, все языки равны по происхождению.

«Операция в программировании» - Вычисление интеграла. Решение классических задач параллельного программирования. Заключение. Часть 2. Часть 3. Поиск максимума (2). Задача о читателях и писателях (2). Свойства планирования. Атомарная операция. Многопоточное программирование. Несколько потоков обращаются к общему ресурсу. Часть 4. Доступ производится в критической секции resource < resource: // Доступ к ресурсу >.

«Курсы программирования» - Создание, выделение, изменение, удаление, связывание, объединение слоев. Изменение прозрачности слоя. Коллаж, способы создания коллажа. Создание многослойного изображения. Создание программ, которые решают сложные пользовательские задачи. Углубление знаний основных алгоритмических структур (следование, ветвление, цикл).

«Классификация языков программирования» - Утилита для работы с библиотеками; встроенная справочная служба; отладочная программа. Словесную запись алгоритма; графическую запись алгоритма; программную запись алгоритма. Машинным; машинно-ориентированным; машинно-независимым языкам. Задание. Программа для компьютера представляет собой: Для исправления ошибок в тексте программы необходима:

«Программа по русскому языку» - Содержание второго класса обучения направлено на достижение следующих целей: Содержание курса четвертого года обучения направлено на достижение следующих целей: В курсе 1-го года обучения выделяются две ведущие содержательные линии: Программа курса решает следующие задачи: Содержание третьего года обучения, обеспечивает формирование следующих умений у школьников:

«Объект объектно-ориентированного программирования» - Наследование. Уникальность. Инкапсуляция. Подклассы обычно дополняют или переопределяют унаследованную структуру и поведение. Полиморфизм. Объектно-ориентированный подход обладает преимуществами. Состояние. Типы отношений между классами. Агрегация (aggregation); ассоциация (association); наследование (inheritance); метаклассы (metaclass).

Языки программирования

23 презентации о языках программирования
Урок

Информатика

130 тем
Картинки
900igr.net > Презентации по информатике > Языки программирования > Основы программирования на языке Java