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

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

22.03.2015, 15:28. Показов 1338. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите, как показать, что один класс наследует другой? в с++ было вот так class client_library: public person, к примеру читатель наследует личность, какой аналог этой строке в джава?

В задании сказано, что класс сотрудник расширяет класс человек, как это реализовать?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.03.2015, 15:28
Ответы с готовыми решениями:

Наследование
Здравствуйте, недавно начал изучать этот прекрасный язык (читаю книжку Шилдта). Возник вопрос по наследованию, подкласс не может обращаться...

Наследование
test t = new test2(); Как это понимать? Почему с переменной t типа test можно связать объект test2? Что с этим можно делать? И так можно...

Наследование
Помогите написать программу, срочно нужно! Разработайте базовый класс четырехугольников, который описывает данные о фигурах, и...

17
8 / 8 / 2
Регистрация: 12.09.2012
Сообщений: 32
22.03.2015, 16:19
Ключевое слово extends указывает что класс наследует другой класс, который указывается после этого слова:
Java
1
2
3
4
5
6
class Human{
 
}
class Employee extends Human{
 
}
Таким образом класс Employee наследует Human, и может использовать поля и методы класса Human, если они не были сокрыты преднамеренно для ограничения доступа.
1
0 / 0 / 1
Регистрация: 04.05.2014
Сообщений: 125
22.03.2015, 16:27  [ТС]
Огромное спасибо!!!!
0
8 / 8 / 2
Регистрация: 12.09.2012
Сообщений: 32
22.03.2015, 16:28
Расширяет - это значит что класс сотрудник наследует члены родительского класса (переменные и методы).
Для проверки соответствия расширяемости одного другим используется конструкция IS-A (является):
сотрудник является человеком? - логично! - значит сотрудник расширяет понятие (возможности), более широко раскрывает тему человека, придает ему более конкретный образ в виде сотрудника.
1
0 / 0 / 1
Регистрация: 04.05.2014
Сообщений: 125
22.03.2015, 16:39  [ТС]
Возник еще один вопрос, как сделать так, чтобы, к примеру у человека есть метод scan(), где вводятся личные данные, у сотрудника тоже есть одноименный метод, но вводятся другие данные, как сделать так, чтобы они чередoвались? сначала личная информация потом информация сотрудника? в с++ это делается вот так:
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void client_library::print()
                {
                    
                    person::print();//!!!
cout<<"The number of tickets: "<<number_b<<endl;
                    cout<<"The date of issue: "<<deta<<endl;
                    cout<<"Annual installment: "<<vnesok*12<<endl;
                    cout<<"Books:\n";
                    for (int i=0;i<k_b;i++)
                    {
                        cout<<books[i]<<"\n";
                    }
                    
 
                                }
0
8 / 8 / 2
Регистрация: 12.09.2012
Сообщений: 32
22.03.2015, 16:50
Все зависит от условия, но обычно для этого просто переопределяется нужный родительский метод, и в него добавляется своя реализация для класса сотрудник.
или например псевдокод:
Java
1
2
3
4
5
6
7
8
9
10
11
class Human{
public void scan(){
//реализация родителя
}
}
class Employee extends Human{
public void scan(){
super.scan()
//реализация потомка
}
}
1
 Аватар для Sanan07
284 / 264 / 173
Регистрация: 27.07.2014
Сообщений: 584
22.03.2015, 16:51
В начале переопределенного метода пишете
Java
1
super.print();
0
0 / 0 / 1
Регистрация: 04.05.2014
Сообщений: 125
22.03.2015, 16:54  [ТС]
super это обьект?

Добавлено через 2 минуты
Как я понял, эти два класса должны быть в разных файлах, ведь когда я оставляю так, пишет ошибку :
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
package task1;
 
import java.util.Scanner;
 
public  class human {
 
    private String second_name,name,third_name, sex, date;
    public human(){second_name="";name="";third_name=""; sex=""; date="";}
    public void scan(){
        System.out.print("Фамилия: ");
        Scanner sc = new Scanner(System.in);
            second_name = sc.nextLine();
          System.out.print("Имя: ");
        Scanner sc2 = new Scanner(System.in);
             name = sc2.nextLine();
          System.out.print("Отчество: ");
        Scanner sc3 = new Scanner(System.in);
            third_name = sc3.nextLine();
          System.out.print("Дата рождения: ");
        Scanner sc4 = new Scanner(System.in);
            date = sc4.nextLine();
          System.out.print("Пол: ");
        Scanner sc5 = new Scanner(System.in);
            sex = sc5.nextLine();
    }
 
 
 
}
 
public class vicar extends human{
    private String department, position; private int salary;
    public vicar(){department=""; position=""; salary=0;}
    public void scan(){
        System.out.print("Подразделение: ");
        Scanner sc6 = new Scanner(System.in);
            department = sc6.nextLine();
          System.out.print("Должность: ");
        Scanner sc7 = new Scanner(System.in);
             position = sc7.nextLine();
          System.out.print("Зарплата: ");
        Scanner sc8 = new Scanner(System.in);
            salary = sc8.nextInt();         
    }
    
    public void zviln(){
        System.out.print("Увольнение с работы");
    }
    public void priyom(){
        System.out.print("Прием");
    }
}
0
 Аватар для Sanan07
284 / 264 / 173
Регистрация: 27.07.2014
Сообщений: 584
22.03.2015, 16:59
да в одном файле может быть только один public class
super - это ссылка на объект родительского класса
1
8 / 8 / 2
Регистрация: 12.09.2012
Сообщений: 32
22.03.2015, 17:00
Лучший ответ Сообщение было отмечено Спайдермэн как решение

Решение

это ключевое слово, super позволяет вызывать родительскую версию замененного метода из дочернего класса.
можно в одном файле, только уберите идентификатор public от public class vicar extends human{
1
0 / 0 / 1
Регистрация: 04.05.2014
Сообщений: 125
22.03.2015, 17:02  [ТС]
прошу прощения за столько вопросов, они возникают из ниоткуда) вроде бы все ясно, потом бац *_*
как связать все эти классы между собой? задача у меня стояла сделать вот такое наследование человек-сотрудник-подразделение-должность, есть 4 класса
0
8 / 8 / 2
Регистрация: 12.09.2012
Сообщений: 32
22.03.2015, 17:09
Лучший ответ Сообщение было отмечено Спайдермэн как решение

Решение

Главный класс Человек.
его наследует сотрудник.
У сотрудника есть должность. Должность указывается полем класса сотрудник, для должности ненужно отдельный класс, это просто переменная в которую будет записана какая то константа при создание обьекта класса сотрудник.

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

Но подразделение на IS-A а HAS-A,
то есть если будем делать его классом, то подразделение это совершенно отдельный класс, который будет связан с классом сотрудник с помощью композиции, композиция это когда в одном классе создается экземпляр другого класса,
в нашем случае у класса подразделение будет поле класса в виде экземляра класса сотрудник.
1
0 / 0 / 1
Регистрация: 04.05.2014
Сообщений: 125
22.03.2015, 17:12  [ТС]
Цитата Сообщение от Flexys5 Посмотреть сообщение
Должность указывается полем класса сотрудник, для должности ненужно отдельный класс
в задании четко прописано - нужно

Добавлено через 57 секунд
Цитата Сообщение от Flexys5 Посмотреть сообщение
Подразделение может быть и переменной, и классам, если оно функциональное и имеет кучу методов и полей.
все 4 случае классы, написано черным по белому..
0
8 / 8 / 2
Регистрация: 12.09.2012
Сообщений: 32
22.03.2015, 17:19
Цитата Сообщение от Спайдермэн Посмотреть сообщение
все 4 случае классы, написано черным по белому..
на заборе тоже много чего написано.
Значит ТЗ не верно, а будете грубить - будите сами проектировать.
1
0 / 0 / 1
Регистрация: 04.05.2014
Сообщений: 125
22.03.2015, 17:21  [ТС]
главная часть программы main будет в классе человек, верно?
Цитата Сообщение от Flexys5 Посмотреть сообщение
композиции, композиция это когда в одном классе создается экземпляр другого класса,
можно наглядный пример?
0
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
22.03.2015, 17:24
неблагодарное занятие помогать без написанного задания, а то сначала одно, потом другое, а потом выясняется что делать надо было вообще третье
0
0 / 0 / 1
Регистрация: 04.05.2014
Сообщений: 125
22.03.2015, 17:31  [ТС]
Особенно от вас много помощи)

Добавлено через 1 минуту
Цитата Сообщение от Flexys5 Посмотреть сообщение
на заборе тоже много чего написано.
Значит ТЗ не верно, а будете грубить - будите сами проектировать.
Я не хотел нагрубить, не думал, что вы так восприймете. Спасибо вам огромное за помощь! очень помогли
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
23.03.2015, 01:42
Цитата Сообщение от Flexys5 Посмотреть сообщение
Должность указывается полем класса сотрудник, для должности ненужно отдельный класс
смотря что включает в себя должность. Может быть там предусмотренны часы работы и.т.д. Зависит от задания.

Спайдермэн, не выкладывайте задание по частям иначе рискуете получить неверные ответы.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.03.2015, 01:42
Помогаю со студенческими работами здесь

Наследование
Привет) Почему метод show из EvenOdd возращает нули а не значение массива суперкласса? import java.util.*; public class...

Наследование
ребят помогите понять логику Задача: Посчитать площадь и периметр фигур. Есть типы Фигура - Круг - Квадрат - Прямоугольник -...

Наследование
Создайте пример, демонстрирующий синтаксис вызова в одном из методов класса др. метода этого же класса, а так же переопределите в этом...

Наследование
Запутался с наследованием и с переменными , помогите всё расставить по местам : Вот то что получилось пока что ... public...

Наследование
Здравствуйте, помогите пожалуйста начинающему программисту! Решил попытаться освоить Java и столкнулся с такой проблемой при компилировании...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru