Главная страница

Объекты, классы и пакеты в Java блок Вопрос ответ. Основное вопросы что такое ооп. Ооп


Скачать 75.07 Kb.
НазваниеОсновное вопросы что такое ооп. Ооп
АнкорОбъекты, классы и пакеты в Java блок Вопрос ответ
Дата23.06.2022
Размер75.07 Kb.
Формат файлаdocx
Имя файлаОбъекты, классы и пакеты в Java блок Вопрос ответ.docx
ТипДокументы
#612838

ОСНОВНОЕ ВОПРОСЫ

  1. что такое ООП.

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

  1. принципы ООП

Абстракция - это способ представления элементов задачи из реального мира в виде объектов в программе.

Инкапсуляция – Это способ ограничения полей в том классе где они задекларированы доступ к полям через set и get. set voit назночает полям значения get возврощает значение заданное полю. Так же проверять ошибки.

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

В классы наследники можно добавлять поля и методы, методы можно переопределять, тип возвращаемого метода должен совпадать или быть подклассом. Модификатор доступа должен быть тем же или более открытым.

Полиморфизм это способность метода обрабатывать данные разных типов. Например передавать в метод разные типы если у них один и тот же родитель.

Пример Через объект класса Собака мы можем обращается к переменой класса животное родительского типа. Код меньше и многоразово, выстроив правельную наследственную связь можно одним методом в пораметрах когорого родитель обслужить все объектов классов потомков.

  1. Модификаторы доступа

Private – Он ограничивает видимость пределами одного класса.

Default – Такие поля или методы видны всем классам в текущем пакете.

Protected – доступен из любого места в текущем классе или пакете или в производных классах, даже если они находятся в других пакетах

Public - доступ для всех из любого другого кода проекта

  1. Указатели this и super.

Super – Ключевое слово которое вызывает конструктор или метод из базового класса. Разрешено только в теле класса наследника

this – Ключевое слово которое вызывает объект внутри класса, позволяет присвоить полю класса значение переменной поступившей в параметры метода.

Должно быть по принципу подстановки Поведение унаследованных классов не должно противоречить поведению заданному базовым классом.

  1. Модификатор static

Static — модификатор, применяемый к полю, блоку, методу или внутреннему классу. Данный модификатор указывает на привязку субъекта к текущему классу.

Модификатор Static к полю класса и методу позволяет вызывать методы и поля не на объекте класса, а на самом классе.

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

Статический метод может работать только со статическими переменными из за того что он один на класс и общий на все объекты этого класса.

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

Коллекция статических методов,

import static java.lang.System.*;

import static java.lang.System.*;

import static java.lang.Math.*;

Для объявления статических переменных, констант, методов и инициализаторов перед их объявлением указывается ключевое слово static.

  1. Можно ли использовать статические методы в обычных? Наоборот? Почему?

Обычные могут использовать статические

Обычные методы привязаны к объектам (экземплярам) класса и могут обращаться к обычным-переменным класса (а также к статическим переменным и методам).

Статические только к статическим

Статические же методы привязаны к статическому объекту класса и могут обращаться только к статическим переменным и/или другим статическим методам класса.

  1. Наследование и реализация.

Одним из ключевых аспектов объектно-ориентированного программирования является наследование. С помощью наследования можно расширить функционал уже имеющихся классов за счет добавления нового функционала или изменения старого

Наследование классов и переопределение его методов

Конкретный код при выполнение вызова объекта определяется классом объекта находящегося по ссылке в момент исполнения программы. Это унаследованный класс со всеми признаками базового класса, может переопределить обработку метода ( клиент – випклиен )

Наследование и реализация.

Должно быть по принципу подстановки Поведение унаследованных классов не должно противоречить поведению заданному базовым классом.

  1. Абстрактные классы это концепция, а не реализация.

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

Экстентс

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

Абстрактный классе нельзя создавать экземпляры.

в таком классе может быть всё тоже самое, что в обычном, только Поля, Конструкторы, Методы, методы могут быть абстрактными то есть без реализации.

  1. Интерфейсы. Мы пишем, что должно быть реализовано, но не указываем как.

Это контракт, набор сигнатур метода и если мы соглашаемся с этим контрактом мы реализуем все эти методы

Имплиментс

Public interface не задаёт реализацию, он задаёт коркас, нет реализации методов есть только их сигнатуры, кс Эмплиментс. Интерфейс используется для того, что бы мы были уверены, что у классов есть методы которые прописаны в интерфейсе.

  1. Анонимные классы.

Анонимные классы, если вам нужен локальный класс для одноразового использования» Анонимный класс — это полноценный внутренний класс. Поэтому у него есть доступ к переменным внешнего класса, в том числе к статическим и приватным. Не может быть статическим

  1. Класс Object и класс Class.

Класс — это шаблонная конструкция, которая позволяет описать в программе объект, его свойства (атрибуты или поля класса) и поведение (методы класса). Поле класса — это переменная, которая описывает какое-либо из свойств данного класса.

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

Object

все классы наследуются от класса Object. Все остальные классы, даже те, которые мы добавляем в свой проект, являются неявно производными от класса Object. Поэтому все типы и классы могут реализовать те методы, которые определены в классе Object. Рассмотрим эти методы.

toString – по умолчанию позволяет вывести имя хеш код объекта. Переопределить можно в классе предке прописав public String toString() через ретёрн.

hashCode - позволяет задать некоторое числовое значение, которое будет соответствовать данному объекту или его хэш-код.

getClass позволяет получить тип данного объекта

Equals - сравнивает два объекта на равенство

Notify –

NotifyAll -



10) Контракт между equals() и hashCode().

1) Если два объекта равны, они должны иметь одинаковый хэш-код.

2) Если два объекта имеют одинаковый хэш-код, они могут быть равны или не равны.

ДОП ВОПРОСЫ

  1. Что будет если передать массив в метод, который изменит его значения, изменятся ли они вне метода? Почему? А если передать примитив?

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

  1. Как реализована неизменность String?

Ключевым словам final неизменность обеспечивает правильность загрузки класса при помощи Classloader. К примеру, задумайтесь об экземпляре класса, когда вы пытаетесь загрузить java.sql.Connection класс, но значение ссылки изменено на myhacked.Connection класс, который может осуществить нежелательные вещи с вашей базой данных.

  1. Что такое final? Что может быть final? Как они работают?

Final – это ключевое слово им мы обозначаем константу в поле можно указать статик. Final Служит для снижение растраты памяти.

Класс final - является финальным это означает, что от данного класса нельзя наследоваться

Поле final - означает, что значение полю можно присвоить только один раз, присвоение значение либо в поле либо в конструкторе.

Final пременим к локальным переменным и к параметрам методов.

Где может использоваться модификатор final?

В объявлении метода.

В объявлении нестатического поля класса.

В объявлении параметра метода.

В объявлении статического поля класса.

В объявлении локальной переменной.

В объявлении класса.

  1. В чём разница между instanceOf и getClass?

instanceOf позволяет выяснить, является ли переданный в качестве параметра объект объектом определенного класса

getClass позволяет получить тип данного объекта по ссылке

  1. Какие методы в интерфейсе могут иметь реализацию?

default методы по умолчанию

Статические методы Начиная с JDK 8 в интерфейсах доступны статические методы - они аналогичны методам класса

статические

Можно ли создать поля в интерфейсе?

Только Public, final, Static. константы

  1. Из-за чего происходят коллизии? Почему нельзя написать hashcode гарантировано без коллизий?

Потому что значения hashcode ограничино Интом

  1. Может ли быть конструктор у абстрактного класса? Для чего?

Может, компилятор добавит в абстрактный класс конструктор по умолчанию без аргументов. Без него ваш подкласс не скомпилируется, поскольку первый оператор в любом конструкторе представляет собой неявный вызов super() – конструктора суперкласса по умолчанию в языке Java.

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

  1. Что такое конструкторы? Конструктор по-умолчанию .

Конструктор

Отличие от методов, нету типа возвращаемого значения, public Имя класса() тип значения прописывается в параметрах. Работает с this

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

Позволяет упростить создания объекта, не использовать геторы и сеторы

по-умолчанию

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

  1. Что такое перегрузка методов

Это когда в одном классе создаётся несколько методов с одинаковым названием, но с разными параметрами. Перегрузка возможна пока все методы имеют разные параметры.

  1. Как происходит переопределение конструкторов.

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

  1. Передача параметров по ссылке или по значению? Как передаются объекты в метод?

Java передает параметры по значению. Всегда.

Это означает — "скопировать значение и передать копию."

Для примитивных типов — вы передаете копию текущего значения, для ссылок на объекты — вы передаете копию ссылки (дистанционного управления). Вы никогда не передаете объект. Все объекты хранятся в куче. Всегда.

  1. Что такое нативные методы, их плюсы и минусы?

Нативные методы позволяют вам использовать код из других языков, таких как C или C ++, в вашем Java-коде. Вы используете их, когда Java не предоставляет необходимую вам функциональность.

Плюсы - могут работать быстрее, помогать решать сложные уравнения.

Минусы - Трудно отлаживать, Вам нужен отладчик C / C++ для отладки собственного кода. Плохой код C/C++ в вашей родной библиотеке может / приведет к сбоям дампов ядра / сегментации, от которых JVM не сможет восстановиться, поэтому все ваше приложение выйдет из строя.

  1. Можно ли использовать статические методы в обычных? Наоборот? Почему?

Обычные могут использовать статические

Обычные методы привязаны к объектам (экземплярам) класса и могут обращаться к обычным-переменным класса (а также к статическим переменным и методам).

Статические только к статическим

Статические же методы привязаны к статическому объекту класса и могут обращаться только к статическим переменным и/или другим статическим методам класса.

  1. Синтаксические отличия интерфейса от абстрактного класса (АК)? 5 отличий

Основное

интерфейс это то, что класс умет делать

абстрактный класс это то чем класс является

НА КАРТИНКЕ!!!

  1. Может ли статический метод быть перегружен? Будет ли работать переопределение статического метода?

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

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

  1. Может ли быть абстрактный класс без абстрактных методов?

Нет Методы, методы могут быть абстрактными то есть без реализации.

  1. Что такое абстрактный класс? Чем отличается от обычного?

Абстрактные классы призваны предоставлять базовый функционал для классов-наследников. А производные классы уже реализуют этот функционал.

Абстрактный классе нельзя создавать экземпляры.

  1. Может ли быть конструктор у абстрактного класса? Для чего?

Да, в абстрактном классе в Java можно объявить и определить конструкторы. ... Даже если вы не объявили никакого конструктора, компилятор добавит в абстрактный класс конструктор по умолчанию без аргументов Без него ваш подкласс не скомпилируется, поскольку первый оператор в любом конструкторе представляет собой неявный вызов super() – конструктора суперкласса по умолчанию в языке Java.


написать администратору сайта