Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 01.08.2015
Сообщений: 104

ООП в Java

11.08.2018, 11:36. Показов 786. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здарова, мужики. Изучаю Java, появилось несколько непонятных для меня вещей, которые не дают мне покоя
Надеюсь, что сможете мне помочь ответом или ссылочкой на источник для чтива. Итак, вопросы такие:

1. Скажите пожалуйста, нарушает ли инкапсуляцию конструкция внутреннего класса? Где-то пишут, что да, где-то, что наоборот - укрепляет. Нельзя обратиться напрямую из другого класса к private-полю другого класса через экземпляр первого, это абсолютно точно. Так нарушает или нет?
2. Модификатор protected позволяет обозначить те поля и методы, которые будут доступны классу-наследнику как в пределах пакета, так и в другом пакете. Но почему я не могу создать экземпляр класса-наследника, находящегося в другом пакете, и через него вызвать protected-члены класса-родителя? Могу вызвать только указав идентификатор члена. Пример:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// package test.oop
 
class A {
  protected int a = 3;
}
 
// package test.oop.practice
 
import test.oop;
 
class B extends A {
   // не могу так использовать
   A a = new B();
   System.out.print(a.x); // ошибка, пишет, что поле a.x не видимо
 
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.08.2018, 11:36
Ответы с готовыми решениями:

ООП в JAVA
Всем здравствуйте и с наступающим Новым Годом и праздниками! Объектно-ориентированное программирование в Java, разбираюсь:) 1)...

ООП Java
Есть три класса: group, person и skill(предпочтительно: enum, но допустимо любое решение). В первом задании необходимо добавить ...

ООП в JAVA
Реализовать приложение, позволяющее создавать цветочные композиции. Составляющими цветочной композиции являются цветы и упаковка. Для...

4
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
11.08.2018, 12:59
Цитата Сообщение от Kirillgo Посмотреть сообщение
. Скажите пожалуйста, нарушает ли инкапсуляцию конструкция внутреннего класса? Где-то пишут, что да, где-то, что наоборот - укрепляет. Нельзя обратиться напрямую из другого класса к private-полю другого класса через экземпляр первого, это абсолютно точно. Так нарушает или нет?
сам то понял что сказал?
Цитата Сообщение от Kirillgo Посмотреть сообщение
ошибка, пишет, что поле a.x не видимо
с чего ты взял, что оно должно быть видимо?
0
0 / 0 / 0
Регистрация: 01.08.2015
Сообщений: 104
11.08.2018, 13:47  [ТС]
xoraxax, да, понял конечно. Еще раз: нарушает ли инкапсуляцию конструкция внутреннего класса? Если да, то как именно? Если нет, то почему нет? Что не понятного? Дальше, я написал, что в Интернете, а именно в статьях, описывающих внутренние классы, сказано, что они укрепляют инкапсуляцию за счет того, что класс, будучи внутренним, да еще и полезный только в контексте обрамляющего класса, не надо выносить в отдельный top-level класс. С другой стороны, я ведь могу напрямую обращаться к non-static private членам класса, а это как-бы уже нарушает принцип. Вот я и интересуюсь, нарушает или нет.
Идем дальше, я написал, что поле a.x не видимо. С чего я взял, что оно должно быть видимо? Ок, класс B наследует от класса А. Поле x помечено как protected, соответственно я имею доступ к этому полю даже находясь в другом пакете. Как известно, вызов поля определяется по типу объектной ссылки, этот вызов не полиморфный. В классе-наследнике я его не затеняю. Вот и не понимаю, почему я не могу через ссылку типа А обратиться к этому полю.
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
11.08.2018, 14:42
я бы тебе предложил побольше код писать
0
958 / 577 / 136
Регистрация: 23.05.2012
Сообщений: 7,364
11.08.2018, 14:46
Цитата Сообщение от Kirillgo Посмотреть сообщение
Где-то пишут, что да, где-то, что наоборот - укрепляет
Наверняка там же объясняется почему. Боюсь скажи да количество внутренних классов у Вас необосновано возрастет.
Цитата Сообщение от Kirillgo Посмотреть сообщение
через него вызвать protected-члены
Можете если тип будет В. Для типа А к полю х из другого пакета Вы обращаться не можете. И без разницы, что в A по сути лежит B
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.08.2018, 14:46
Помогаю со студенческими работами здесь

Java ООП(интерфейс)
Добрый вечер,помогите написать код пожалуйста. Есть класс товаров(чего либо),реализуйте для него два интерфейса.В одном просмотр...

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

Как решается квадратное уравнение через ООП в Java?
Не могу понять как решать квадратные уравнение через ООП

книга учебник проектироване моделирование ооп объектно-ориентированное java
День добрый. Интересуют книги по проектированию программ, желательно, на java (на крайняк, на С++ можно). Знания синтаксиса java есть,...

Основы Java освоены, понятия, парадигмы, ООП. Читать код могу, понятия есть, но все бы ничего, что дальше?
Доброго времени суток товарищи Столкнулся с такой ситуацией: куда двигаться дальше? Основы Java освоены, понятия, парадигмы, ООП....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru