🗊Презентация Статика в Java

Нажмите для полного просмотра!
Статика в Java, слайд №1Статика в Java, слайд №2Статика в Java, слайд №3Статика в Java, слайд №4Статика в Java, слайд №5Статика в Java, слайд №6Статика в Java, слайд №7Статика в Java, слайд №8Статика в Java, слайд №9Статика в Java, слайд №10Статика в Java, слайд №11Статика в Java, слайд №12Статика в Java, слайд №13Статика в Java, слайд №14Статика в Java, слайд №15Статика в Java, слайд №16Статика в Java, слайд №17Статика в Java, слайд №18Статика в Java, слайд №19Статика в Java, слайд №20Статика в Java, слайд №21Статика в Java, слайд №22Статика в Java, слайд №23Статика в Java, слайд №24Статика в Java, слайд №25Статика в Java, слайд №26Статика в Java, слайд №27Статика в Java, слайд №28Статика в Java, слайд №29Статика в Java, слайд №30Статика в Java, слайд №31Статика в Java, слайд №32

Содержание

Вы можете ознакомиться и скачать презентацию на тему Статика в Java. Доклад-сообщение содержит 32 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





Статика в Java
Описание слайда:
Статика в Java

Слайд 2





План лекции
Статические методы и поля
Сттаические блоки
Статический импорт
Класс Class
Порядок загрузки
Параметризованные классы и методы (generic)
Описание слайда:
План лекции Статические методы и поля Сттаические блоки Статический импорт Класс Class Порядок загрузки Параметризованные классы и методы (generic)

Слайд 3





Структура класса
Описание слайда:
Структура класса

Слайд 4


Статика в Java, слайд №4
Описание слайда:

Слайд 5





Статические поля
Поле создается в единственном экземпляре вне зависимости от количества объектов данного класса 
Существуют без создания экземпляра класса
Статические поля класса создаются  в момент первого обращения к данному классу.
Использование:
С модификатором final объявляют константы (например число PI в классе Math)
Использовать одну переменную для всех экземпляров класса
Singleton
Описание слайда:
Статические поля Поле создается в единственном экземпляре вне зависимости от количества объектов данного класса Существуют без создания экземпляра класса Статические поля класса создаются  в момент первого обращения к данному классу. Использование: С модификатором final объявляют константы (например число PI в классе Math) Использовать одну переменную для всех экземпляров класса Singleton

Слайд 6





Пример со статическим полем
public class Proba { 
	int a = 10; // обычное поле 
	static int cnt = 0; // статическое поле 
	public void print() { 
		System.out.println("cnt = " + cnt); 	
		System.out.println("a = " + a); } 
	public static void main(String args[]) { 
		Proba obj1 = new Proba(); 
		cnt++; // увеличим cnt на 1 
		obj1.print(); 
		Proba obj2 = new Proba(); 
		cnt++; // увеличим cnt на 1 
		obj2.a = 0; 
		obj1.print(); 
		obj2.print(); } 
}
Описание слайда:
Пример со статическим полем public class Proba { int a = 10; // обычное поле static int cnt = 0; // статическое поле public void print() { System.out.println("cnt = " + cnt); System.out.println("a = " + a); } public static void main(String args[]) { Proba obj1 = new Proba(); cnt++; // увеличим cnt на 1 obj1.print(); Proba obj2 = new Proba(); cnt++; // увеличим cnt на 1 obj2.a = 0; obj1.print(); obj2.print(); } }

Слайд 7





Статические методы
По аналогии со статическими полями, статические методы не привязаны к конкретному объекту класса. При вызове статического метода перед ним можно указать не ссылку, а имя класса:
class SomeClass { 
	static int t = 0; // статическое поле
	 . . . 
	public static void f() { // статический метод 
		. . . 
	} 
} 
. . . 
SomeClass.f(); 
. . .
Описание слайда:
Статические методы По аналогии со статическими полями, статические методы не привязаны к конкретному объекту класса. При вызове статического метода перед ним можно указать не ссылку, а имя класса: class SomeClass { static int t = 0; // статическое поле . . . public static void f() { // статический метод . . . } } . . . SomeClass.f(); . . .

Слайд 8





Ограничения на static методы:
Они могут вызывать только другие статические методы. 
Они должны осуществлять доступ только к статическим переменным.
Они ни коим образом не могут ссылаться на члены типа this или super. 
Если статический метод определен как final -метод, то он не может быть переопределен.
статические методы не могут быть абстрактными;
статические методы переопределяются в подклассах только как статические.
Описание слайда:
Ограничения на static методы: Они могут вызывать только другие статические методы. Они должны осуществлять доступ только к статическим переменным. Они ни коим образом не могут ссылаться на члены типа this или super. Если статический метод определен как final -метод, то он не может быть переопределен. статические методы не могут быть абстрактными; статические методы переопределяются в подклассах только как статические.

Слайд 9





Пример статических методов
System.out.println(….);
public static void main(String[] args) {…}
Методы класса Math 
Описание слайда:
Пример статических методов System.out.println(….); public static void main(String[] args) {…} Методы класса Math 

Слайд 10





Задание:
Создать класс Automobile, в котором определить поле, которое будет содержать порядковый заводской номер автомобиля. Так же определить статический метод, который будет возвращать это значение.
Описание слайда:
Задание: Создать класс Automobile, в котором определить поле, которое будет содержать порядковый заводской номер автомобиля. Так же определить статический метод, который будет возвращать это значение.

Слайд 11





Статический блок
За словом static следует блок кода, окруженного фигурными скобками. Вы можете использовать статический блок для инициализации статических данных.
static List<char> alphabet; 
static { 
	alphabet = new ArrayList<char>(); 
	for (char c='a'; c<='z'; c++) 
		alphabet.add(c); 
}
Из-за статичности блок запрашивается единожды, когда создается класс. Теперь вам не нужен конструктор, и вы можете пользоваться данными без предшествующего создания класса.
Описание слайда:
Статический блок За словом static следует блок кода, окруженного фигурными скобками. Вы можете использовать статический блок для инициализации статических данных. static List<char> alphabet; static { alphabet = new ArrayList<char>(); for (char c='a'; c<='z'; c++) alphabet.add(c); } Из-за статичности блок запрашивается единожды, когда создается класс. Теперь вам не нужен конструктор, и вы можете пользоваться данными без предшествующего создания класса.

Слайд 12





Какой результат?
Описание слайда:
Какой результат?

Слайд 13





Задание:
В классе определить статическое поле-массив, которое инициализируется в статическом блоке.
Описание слайда:
Задание: В классе определить статическое поле-массив, которое инициализируется в статическом блоке.

Слайд 14





Статический импорт
Для того чтобы получить доступ к статическим членам классов, требуются указать ссылку на класс. К примеру, необходимо указать имя класса Math:
		double r = Math.cos(Math.PI * theta);
Конструкция статического импорта позволяет получить прямой доступ к статическим членам класса, который содержит эти статические члены:
		import static java.lang.Math.PI;
или все целиком:
		import static java.lang.Math.*;
Однажды импортированный статический член может быть использован без указания имени класса:
		double r =cos(PI * theta);
Описание слайда:
Статический импорт Для того чтобы получить доступ к статическим членам классов, требуются указать ссылку на класс. К примеру, необходимо указать имя класса Math: double r = Math.cos(Math.PI * theta); Конструкция статического импорта позволяет получить прямой доступ к статическим членам класса, который содержит эти статические члены: import static java.lang.Math.PI; или все целиком: import static java.lang.Math.*; Однажды импортированный статический член может быть использован без указания имени класса: double r =cos(PI * theta);

Слайд 15





Когда использовать статический импорт?
Если иначе вы вынуждены объявлять локальные копии констант
Постоянное использование статических членов одного класса из одного или двух других классов.
Чрезмерное использование статического импорта может сделать вашу программу нечитаемой из-за увеличения пространства имен
Импортирование всех статических методов из класса может быть частично вредно для читабельности. Импортируйте их по-отдельности
Использованный умело, статический импорт может сделать вашу программу более наглядной
Описание слайда:
Когда использовать статический импорт? Если иначе вы вынуждены объявлять локальные копии констант Постоянное использование статических членов одного класса из одного или двух других классов. Чрезмерное использование статического импорта может сделать вашу программу нечитаемой из-за увеличения пространства имен Импортирование всех статических методов из класса может быть частично вредно для читабельности. Импортируйте их по-отдельности Использованный умело, статический импорт может сделать вашу программу более наглядной

Слайд 16





Пример без статического импорта
Описание слайда:
Пример без статического импорта

Слайд 17





Задание:
Переписать программу вычисления гипотенузы прямоугольного треугольника, с использованием статического импорта. Использовать два статических метода из встроенного в язык Java класса Math, являющегося частью пакета Java.lang. Первый метод, Math.pow(), возвращает значение, возведенное в определенную степень. Второй — Math.sqrt() — возвращает квадратный корень своего аргумента.
Имена sqrt и pow импортировать в область видимости операторами статического импорта.
Описание слайда:
Задание: Переписать программу вычисления гипотенузы прямоугольного треугольника, с использованием статического импорта. Использовать два статических метода из встроенного в язык Java класса Math, являющегося частью пакета Java.lang. Первый метод, Math.pow(), возвращает значение, возведенное в определенную степень. Второй — Math.sqrt() — возвращает квадратный корень своего аргумента. Имена sqrt и pow импортировать в область видимости операторами статического импорта.

Слайд 18





Класс Class
Класс с именем class представляет характеристики класса, экземпляром которого является объект:
хранит информацию о том, не является ли объект на самом деле интерфейсом, массивом или примитивным типом.
каков суперкласс объекта
имя класса
какие в нем конструкторы, поля, методы и вложенные классы
Описание слайда:
Класс Class Класс с именем class представляет характеристики класса, экземпляром которого является объект: хранит информацию о том, не является ли объект на самом деле интерфейсом, массивом или примитивным типом. каков суперкласс объекта имя класса какие в нем конструкторы, поля, методы и вложенные классы

Слайд 19





Класс Class
В классе class нет конструкторов, экземпляр этого класса создается исполняющей системой Java во время загрузки класса и предоставляется методом getClass() класса:
		String s = "Это строка"; 
		Class с = s.getClass();
Статический метод forName(string class) возвращает объект класса class для класса, указанного в аргументе:
		Class cl = Class.forName("Java,lang.String"); (устаревший)
             или Class c2 = Java.lang.String.class;
Описание слайда:
Класс Class В классе class нет конструкторов, экземпляр этого класса создается исполняющей системой Java во время загрузки класса и предоставляется методом getClass() класса: String s = "Это строка";  Class с = s.getClass(); Статический метод forName(string class) возвращает объект класса class для класса, указанного в аргументе: Class cl = Class.forName("Java,lang.String"); (устаревший) или Class c2 = Java.lang.String.class;

Слайд 20





Пример:
Описание слайда:
Пример:

Слайд 21





Задание:
Получить Class объекта и с помощью логических методов isArray(), isIntetface(), isPrimitive() уточнить, не является ли объект массивом, интерфейсом или примитивным типом.
Если объект ссылочного типа, извлечь сведения о вложенных классах, конструкторах, методах и полях методами getDeclaredClasses(), getDeclaredConstructors(), getDeclaredMethods(), getDeclaredFields() , в виде массива классов, соответствейно, Class, Constructor, Method, Field . Последние три класса расположены в пакете java.lang.reflect и содержат сведения о конструкторах, полях и методах аналогично тому, как класс class хранит сведения о классах.
Получить данные, с помощью методов getClasses(), getConstructors(), getlnterfaces(), getMethods(), getFieids() которые возвращают такие же массивы, но не всех, а только открытых членов класса.
Описание слайда:
Задание: Получить Class объекта и с помощью логических методов isArray(), isIntetface(), isPrimitive() уточнить, не является ли объект массивом, интерфейсом или примитивным типом. Если объект ссылочного типа, извлечь сведения о вложенных классах, конструкторах, методах и полях методами getDeclaredClasses(), getDeclaredConstructors(), getDeclaredMethods(), getDeclaredFields() , в виде массива классов, соответствейно, Class, Constructor, Method, Field . Последние три класса расположены в пакете java.lang.reflect и содержат сведения о конструкторах, полях и методах аналогично тому, как класс class хранит сведения о классах. Получить данные, с помощью методов getClasses(), getConstructors(), getlnterfaces(), getMethods(), getFieids() которые возвращают такие же массивы, но не всех, а только открытых членов класса.

Слайд 22





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

Слайд 23





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

Слайд 24





Параметризованные классы и методы (Generic)
Параметризованные (generic) классы и методы, позволяют использовать более гибкую и в то же время достаточно строгую типизацию, что особенно важно при работе с коллекциями. 
Параметризация позволяет создавать классы, интерфейсы и методы, в которых тип обрабатываемых данных задается как параметр.
Описание слайда:
Параметризованные классы и методы (Generic) Параметризованные (generic) классы и методы, позволяют использовать более гибкую и в то же время достаточно строгую типизацию, что особенно важно при работе с коллекциями. Параметризация позволяет создавать классы, интерфейсы и методы, в которых тип обрабатываемых данных задается как параметр.

Слайд 25





Пример generic-класса с двумя параметрами:
Описание слайда:
Пример generic-класса с двумя параметрами:

Слайд 26





Пример параметризованного класса с конструктором и методами
public class Optional <T> {
	private T value;
	public Optional(T value) {
		this.value = value;
	}
	public T getValue() {
		return value;
	}
	public void setValue(T val) {
		value = val;
	}
	public String toString() {
		if (value == null) return null;
		return value.getClass().getName() + " " + value;
	}
}
Описание слайда:
Пример параметризованного класса с конструктором и методами public class Optional <T> { private T value; public Optional(T value) { this.value = value; } public T getValue() { return value; } public void setValue(T val) { value = val; } public String toString() { if (value == null) return null; return value.getClass().getName() + " " + value; } }

Слайд 27





Использование класса Option
public class Runner {
	public static void main(String[] args) {
		Optional<Integer> ob1 = new Optional<Integer>();  //параметризация типом Integer
		ob1.setValue(1);	//попробуйте задать значение “2” ob1.setValue("2");
		int v1 = ob1.getValue();
		System.out.println(v1);
		Optional<String> ob2 = new Optional<String>("Java"); //параметризация типом String
		String v2 = ob2.getValue();
		System.out.println(v2);
		//попробуйте присвоить ob1 = ob2; 
		Optional ob3 = new Optional(); //параметризация по умолчанию – Object
		System.out.println(ob3.getValue());
		ob3.setValue("Java SE 6");
		System.out.println(ob3.toString()); /* выводится тип объекта, а не тип параметризации */
		ob3.setValue(71);
		System.out.println(ob3.toString());
		ob3.setValue(null);
	}
}
Описание слайда:
Использование класса Option public class Runner { public static void main(String[] args) { Optional<Integer> ob1 = new Optional<Integer>(); //параметризация типом Integer ob1.setValue(1); //попробуйте задать значение “2” ob1.setValue("2"); int v1 = ob1.getValue(); System.out.println(v1); Optional<String> ob2 = new Optional<String>("Java"); //параметризация типом String String v2 = ob2.getValue(); System.out.println(v2); //попробуйте присвоить ob1 = ob2; Optional ob3 = new Optional(); //параметризация по умолчанию – Object System.out.println(ob3.getValue()); ob3.setValue("Java SE 6"); System.out.println(ob3.toString()); /* выводится тип объекта, а не тип параметризации */ ob3.setValue(71); System.out.println(ob3.toString()); ob3.setValue(null); } }

Слайд 28





Расширение возможностей
Объявление generic-типа в виде <T>, несмотря на возможность использовать любой тип в качестве параметра, ограничивает область применения разрабатываемого класса. Переменные такого типа могут вызывать только методы класса Object. Доступ к другим методам ограничивает компилятор.
Чтобы расширить возможности параметризованных членов класса, можно ввести ограничения на используемые типы при помощи следующего объявления класса:
		public class OptionalExt <T extends Tип> {
			private T value;
		}
В качестве типа Т разрешено применять только классы, являющиеся наследниками (суперклассами) класса Tип, и соответственно появляется возможность вызова методов ограничивающих типов.
Описание слайда:
Расширение возможностей Объявление generic-типа в виде <T>, несмотря на возможность использовать любой тип в качестве параметра, ограничивает область применения разрабатываемого класса. Переменные такого типа могут вызывать только методы класса Object. Доступ к другим методам ограничивает компилятор. Чтобы расширить возможности параметризованных членов класса, можно ввести ограничения на используемые типы при помощи следующего объявления класса: public class OptionalExt <T extends Tип> { private T value; } В качестве типа Т разрешено применять только классы, являющиеся наследниками (суперклассами) класса Tип, и соответственно появляется возможность вызова методов ограничивающих типов.

Слайд 29





Бывает необходимость в метод параметризованного класса одного допустимого типа передать объект этого же класса, но параметризованного другим типом. В этом случае при определении метода следует применить метасимвол ?. Метасимвол также может использоваться с ограничением extends для передаваемого типа.
public class Mark<T extends Number> {
	public T mark;
	public Mark(T value) {
		mark = value;
	}
	public T getMark() {
		return mark;
	}
	public int roundMark() {
		return Math.round(mark.floatValue());
	}
	/* вместо */ // public boolean sameAny(Mark<T> ob) {
	public boolean sameAny(Mark<?> ob) {
		return roundMark() == ob.roundMark();
	}
	public boolean same(Mark<T> ob) {
		return getMark() == ob.getMark();
	}
}
Описание слайда:
Бывает необходимость в метод параметризованного класса одного допустимого типа передать объект этого же класса, но параметризованного другим типом. В этом случае при определении метода следует применить метасимвол ?. Метасимвол также может использоваться с ограничением extends для передаваемого типа. public class Mark<T extends Number> { public T mark; public Mark(T value) { mark = value; } public T getMark() { return mark; } public int roundMark() { return Math.round(mark.floatValue()); } /* вместо */ // public boolean sameAny(Mark<T> ob) { public boolean sameAny(Mark<?> ob) { return roundMark() == ob.roundMark(); } public boolean same(Mark<T> ob) { return getMark() == ob.getMark(); } }

Слайд 30






public class Runner {
	public static void main(String[] args) {
		// попробуйте Mark<String> ms = new Mark<String>(“7”); 
		Mark<Double> md = new Mark<Double>(71.4D);//71.5d
		System.out.println(md.sameAny(md));
		Mark<Integer> mi = new Mark<Integer>(71);
		System.out.println(md.sameAny(mi));
		// попробуйте md.same(mi); 
		System.out.println(md.roundMark());
	}
}
Описание слайда:
public class Runner { public static void main(String[] args) { // попробуйте Mark<String> ms = new Mark<String>(“7”); Mark<Double> md = new Mark<Double>(71.4D);//71.5d System.out.println(md.sameAny(md)); Mark<Integer> mi = new Mark<Integer>(71); System.out.println(md.sameAny(mi)); // попробуйте md.same(mi); System.out.println(md.roundMark()); } }

Слайд 31





Ограничения generic типов
Невозможно выполнить явный вызов конструктора generic-типа
		class Optional <T> {
			T value = new T();
		}
generic-поля не могут быть статическими
Статические методы не могут иметь generic-параметры или обращаться к generic-полям
		class Failed <T1, T2> {
			static T1 value;
			T2 id;
			static T1 getValue() {
			     return value;
			}
			static void use() {
		 	     System.out.print(id);
			}
Описание слайда:
Ограничения generic типов Невозможно выполнить явный вызов конструктора generic-типа class Optional <T> { T value = new T(); } generic-поля не могут быть статическими Статические методы не могут иметь generic-параметры или обращаться к generic-полям class Failed <T1, T2> { static T1 value; T2 id; static T1 getValue() { return value; } static void use() { System.out.print(id); }

Слайд 32






Спасибо за внимание!
Описание слайда:
Спасибо за внимание!



Похожие презентации
Mypresentation.ru
Загрузить презентацию