кодесурса

Концепции Java объектно-ориентированного программирования

script1adsense2code
script1adsense3code

Вступление

Этот учебник поможет вам понять концепции Java OOP с примерами. Давайте обсудим, каковы особенности объектно-ориентированного программирования. Написание объектно-ориентированных программ включает создание классов, создание объектов из этих классов и создание приложений, которые являются автономными исполняемыми программами, использующими эти объекты.

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

«»

Объекты состоят из атрибутов и методов. Атрибуты - это характеристики, которые определяют объект; Значения, содержащиеся в атрибутах, отличают объекты одного класса друг от друга. Чтобы лучше это понять, давайте возьмем пример Mobile как объекта. Мобильный телефон имеет такие характеристики, как модель, производитель, стоимость, операционная система и т. Д. Поэтому, если мы создаем мобильный объект «Samsung» и мобильный объект «iPhone», мы можем отличить их от характеристик. Значения атрибутов объекта также называются состоянием объекта.

Есть три основные особенности OOPS.

1) Инкапсуляция

2) Наследование

3) Полиморфизм

Давайте обсудим особенности в деталях.

Инкапсуляция

Инкапсуляция означает объединение всех переменных (переменных экземпляра) и методов в один модуль с именем Class. Это также означает скрытие данных и методов внутри объекта. Инкапсуляция обеспечивает безопасность, которая защищает данные и методы от случайных изменений. Программисты иногда называют инкапсуляцию «черным ящиком» или устройством, которое вы можете использовать без учета внутренних механизмов. Программист может получить доступ и использовать методы и данные, содержащиеся в черном ящике, но не может их изменить. Ниже приведен пример класса Mobile со свойствами, которые можно установить один раз при создании объекта с помощью аргументов конструктора. Доступ к свойствам можно получить с помощью методов getXXX (), которые имеют модификаторы открытого доступа.

package oopsconcept;
public class Mobile {	
	private String manufacturer;
	private String operating_system;
	public String model;
	private int cost;
	//Constructor to set properties/characteristics of object
	Mobile(String man, String o,String m, int c){
		this.manufacturer = man;
		this.operating_system=o;
		this.model=m;
		this.cost=c;
	}
	//Method to get access Model property of Object
	public String getModel(){
		return this.model;
	}
	// We can add other method to get access to other properties
}

наследование

Важной особенностью объектно-ориентированных программ является наследование - возможность создавать классы, которые разделяют атрибуты и методы существующих классов, но с более специфическими функциями. Наследование в основном используется для повторного использования кода. Итак, вы используете уже написанные классы и расширяете их. Вот почему мы обсуждали концепцию повторного использования кода. В общем, в одной строке мы можем сказать, что, производя новый класс от существующего класса, он называется наследованием. Вы можете посмотреть в следующем примере для концепции наследования. Здесь у нас есть мобильный класс, расширенный другим конкретным классом, таким как Android и Blackberry.

package oopsconcept;
public class Android extends Mobile{
		//Constructor to set properties/characteristics of object
		Android(String man, String o,String m, int c){
				super(man, o, m, c);
			}
		//Method to get access Model property of Object
		public String getModel(){
			return "This is Android Mobile- " + model;
		}
}

package oopsconcept;
public class Blackberry extends Mobile{
	//Constructor to set properties/characteristics of object
	Blackberry(String man, String o,String m, int c){
					super(man, o, m, c);
				}
	public String getModel(){
		return "This is Blackberry-"+ model;
	}
}

Полиморфизм

В Core Java полиморфизм является одним из простых понятий для понимания. Определение полиморфизма состоит в том, что Poly означает много, а morphos означает формы. Он описывает особенность языков, которая позволяет правильно интерпретировать одно и то же слово или символ в разных ситуациях в зависимости от контекста. В Java есть два типа полиморфизма. Например, в английском языке глагол «бегать» означает разные вещи, если вы используете его со словом «ноги», «бизнес» или «компьютер». Вы понимаете значение слова «бег», основываясь на других словах, используемых с Это. Объектно-ориентированные программы написаны так, что методы с одинаковыми именами работают по-разному в разных контекстах. Java предоставляет два способа реализации полиморфизма.

Статический полиморфизм (полиморфизм времени компиляции / перегрузка метода):

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

package oopsconcept;
class Overloadsample {
	public void print(String s){
		System.out.println("First Method with only String- "+ s);
	}
	public void print (int i){
		System.out.println("Second Method with only int- "+ i);
	}
	public void print (String s, int i){
		System.out.println("Third Method with both- "+ s + "--" + i);
	}
}
public class PolymDemo {
	public static void main(String[] args) {
		Overloadsample obj = new Overloadsample();
		obj.print(10);
		obj.print("Amit");
		obj.print("Hello", 100);
	}
}

Выход:


Динамический полиморфизм (полиморфизм времени выполнения / переопределение метода)

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

package oopsconcept;
public class OverridingDemo {
	public static void main(String[] args) {
		//Creating Object of SuperClass and calling getModel Method
		Mobile m = new Mobile("Nokia", "Win8", "Lumia",10000);
		System.out.println(m.getModel());
		//Creating Object of Sublcass and calling getModel Method
		Android a = new Android("Samsung", "Android", "Grand",30000);
		System.out.println(a.getModel());
		//Creating Object of Sublcass and calling getModel Method
		Blackberry b = new Blackberry("BlackB", "RIM", "Curve",20000);
		System.out.println(b.getModel());
	}
}

абстракция

Все языки программирования предоставляют абстракции. Можно утверждать, что сложность проблем, которые вы можете решить, напрямую связана с видом и качеством абстракции. Важным элементом объектно-ориентированного программирования является абстракция. Люди управляют сложностью посредством абстракции. Когда вы ведете машину, вам не нужно беспокоиться о точной внутренней работе вашего автомобиля (если вы не механик). Что вас беспокоит, так это взаимодействие с вашим автомобилем через его интерфейсы, такие как рулевое колесо, педаль тормоза, педаль акселератора и т. Д. Различные производители автомобилей имеют различную реализацию работы автомобиля, но его основной интерфейс не изменился (т.е. вы все еще используете рулевое колесо , педаль тормоза, педаль акселератора и т. д. для взаимодействия с вашим автомобилем). Следовательно, знания о вашем автомобиле абстрактны.

Мощным способом управления абстракцией является использование иерархических классификаций. Это позволяет разделять семантику сложных систем, разбивая их на более управляемые части. Снаружи автомобиль - это единый объект. Оказавшись внутри, вы видите, что автомобиль состоит из нескольких подсистем: рулевого управления, тормозов, аудиосистемы, ремней безопасности, обогрева, сотового телефона и т. Д. В свою очередь, каждая из этих подсистем состоит из более специализированных подразделений. Например, звуковая система состоит из радио, проигрывателя компакт-дисков и / или магнитофона. Дело в том, что вы управляете сложностью автомобиля (или любой другой сложной системы) с помощью иерархических абстракций.

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

Давайте рассмотрим пример Java Abstract Class, который называется Vehicle. Когда я создаю класс с именем Vehicle, я знаю, что должны быть методы, такие как start () и Stop (), но я не знаю механизма запуска и остановки каждого транспортного средства, поскольку они могут иметь разные механизмы запуска и остановки, например, некоторые могут быть запущены удар или некоторые могут быть нажатием кнопок.

Преимущество Abstraction в том, что если появился новый тип транспортного средства, нам может потребоваться просто добавить один класс, который расширяет класс Vehicle Abstract и реализует конкретные методы. Интерфейс методов запуска и остановки будет таким же.

package oopsconcept;
public abstract class VehicleAbstract {
	public abstract void start();
	public void stop(){
		System.out.println("Stopping Vehicle in abstract class");
	}
}
class TwoWheeler extends VehicleAbstract{
	@Override
	public void start() {
		System.out.println("Starting Two Wheeler");		
w	}	
}
class FourWheeler extends VehicleAbstract{
	@Override
	public void start() {
		System.out.println("Starting Four Wheeler");
	}
}

package oopsconcept;
public class VehicleTesting {
	public static void main(String[] args) {
		VehicleAbstract my2Wheeler = new TwoWheeler();
		VehicleAbstract my4Wheeler = new FourWheeler();
		my2Wheeler.start();
		my2Wheeler.stop();
		my4Wheeler.start();
		my4Wheeler.stop();
	}
}

Выход :


Резюме

  • Объект является экземпляром класса.
  • Инкапсуляция обеспечивает безопасность, которая защищает данные и методы от случайных изменений.
  • Наследование - это родительско-дочерние отношения класса, которые в основном используются для повторного использования кода.
  • Определение полиморфизма состоит в том, что Poly означает много, а morphos означает формы.
  • li> Используя абстракцию, можно моделировать объекты реального мира.
  • Абстракция обеспечивает преимущество повторного использования кода
  • Абстракция позволяет программе открываться для расширения

Предыдущая: Пакеты Java
Далее: отношения Is-A и Has-A

Новый контент: Composer: менеджер зависимостей для PHP , R программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code