powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Метод подставка
50 сообщений из 50, показаны все 2 страниц
Метод подставка
    #38046112
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В интернете на эту тему нахожу везде один и тот же пример, который не могу запустить из-за того, что не знаю, что импортировать для класса Course.
Я чего то не понимаю или пример косячный?
http://crypto.pp.ua/2010/06/metody-podstavki-java-klassov/

Из текста я понял, что класс наследник может поменять тип возвращаемого значения у метода, но только вниз по иерархии наследования. В примере разве не наоборот?
...
Рейтинг: 0 / 0
Метод подставка
    #38046122
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"метод-подставка" я тащусь с этих переводчиков. попробуй догадайся что это было в оригинале.

Почему вы исходник не ищите?
https://www.google.com.ua/search?q=public+class+BaseCourseHelper+extends+CourseHelper
Очевидно же что глава выдрана из какой-то книге и помещена на сайт сомнительного содержания.
...
Рейтинг: 0 / 0
Метод подставка
    #38046123
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

я в книге это и встретил...на русском правда она....ну возможно из нее все и берут. Там дословно также
...
Рейтинг: 0 / 0
Метод подставка
    #38046126
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,
По этой ссылке не много полезной информации вижу
...
Рейтинг: 0 / 0
Метод подставка
    #38046127
javapecker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90,
тут понятнее
java covariant return types
...
Рейтинг: 0 / 0
Метод подставка
    #38046130
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90я в книге это и встретил...на русском правда она....ну возможно из нее все и берут. Там дословно также
Вы не поверите. Но в книге есть класс Course. Показать?
...
Рейтинг: 0 / 0
Метод подставка
    #38046134
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
javapecker java covariant return types
И всё-же. Что такое "подставка"?
...
Рейтинг: 0 / 0
Метод подставка
    #38046135
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

в моей нет
...
Рейтинг: 0 / 0
Метод подставка
    #38046136
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,
ой, есть...

но смысла вопроса это не меняет
...
Рейтинг: 0 / 0
Метод подставка
    #38046137
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90Из текста я понял, что класс наследник может поменять тип возвращаемого значения у метода, но только вниз по иерархии наследования. В примере разве не наоборот?
Дурацкая книга. Нет правда. Переводчики наизобретали терминов и придумали запутанные пример.
BaseCourse extends Course (хотя обычно наборот обзывают)
Поэтому BaseCourse ниже по иерархии.
...
Рейтинг: 0 / 0
Метод подставка
    #38046139
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
javapecker,
прочитал стать, что ты скинул. Убедился, что пример не верен(тот что я в начале запостил)
...
Рейтинг: 0 / 0
Метод подставка
    #38046140
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90javapecker,
прочитал стать, что ты скинул. Убедился, что пример не верен(тот что я в начале запостил)
Выходит запутался ещё больше. Ну, давай распутывайся. Объясни в чем именно не верен пример.
...
Рейтинг: 0 / 0
Метод подставка
    #38046143
javapecker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,
И всё-же. Что такое "подставка"?
Если эта книга - джава.промышленное программирование, то авторы русскоязычные. Значит это их термин а не погрешности перевода. Хз чо они имеют ввиду.
...
Рейтинг: 0 / 0
Метод подставка
    #38046146
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
javapeckerЗначит это их термин а не погрешности перевода. Хз чо они имеют ввиду.
Ну, как бы, логично что все "термины" уже в английском варианте определены. Поэтому изобретать их не нужно. Только переводить. Или это новое слово в Java-программирование не имеющее аналогов зарубежом.
...
Рейтинг: 0 / 0
Метод подставка
    #38046151
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Отвечаю сам себе "подставка" это bridge :)
http://stas-blogspot.blogspot.com/2010/03/java-bridge-methods-explained.html
Имеется ввиду наличие синтетического метода, через который и реализован ковариант возвращаемого типа в Java.

Нахрена это в книге упоминать вообще без объяснения?
...
Рейтинг: 0 / 0
Метод подставка
    #38046153
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

Есть Класс A, у него Метод method c каким то возвращаемым значением
Есть Класс B, у него Метод method c другим возвращаемым значением
B наследуется от A

=> возвращаемое значение метода из класса A должно быть выше по иерархии наследования, чем возвращаемое значение метода из класса B, либо совпадать.
Правильно?
...
Рейтинг: 0 / 0
Метод подставка
    #38046154
javapecker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,
Нахрена это в книге упоминать вообще без объяснения? Чтобы объяснить, надо понять, а там ребята вроде не по этим делам.
...
Рейтинг: 0 / 0
Метод подставка
    #38046156
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczОтвечаю сам себе "подставка" это bridge :)
http://stas-blogspot.blogspot.com/2010/03/java-bridge-methods-explained.html
Имеется ввиду наличие синтетического метода, через который и реализован ковариант возвращаемого типа в Java.

Нахрена это в книге упоминать вообще без объяснения?

Жесть, вот никогда бы не допер:)
...
Рейтинг: 0 / 0
Метод подставка
    #38046158
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

авторИмеется ввиду наличие синтетического метода, через который и реализован ковариант возвращаемого типа в Java.

как много непонятных слов
...
Рейтинг: 0 / 0
Метод подставка
    #38046159
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90
Есть Класс A, у него Метод method c каким то возвращаемым значением
Есть Класс B, у него Метод method c другим возвращаемым значением
B наследуется от A

=> возвращаемое значение метода из класса A должно быть выше ниже по иерархии наследования, чем возвращаемое значение метода из класса B, либо совпадать.
Правильно?

Откройте самое простое что есть - оригинальные уроки.
http://docs.oracle.com/javase/tutorial/java/javaOO/returnvalue.html You can override a method and define it to return a subclass of the original method, like this:

Код: java
1.
2.
3.
public ImaginaryNumber returnANumber() {
    ...
}



This technique, called covariant return type, means that the return type is allowed to vary in the same direction as the subclass .
...
Рейтинг: 0 / 0
Метод подставка
    #38046164
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
javapeckerЧтобы объяснить, надо понять, а там ребята вроде не по этим делам.
Так вот и я о том же. Перевели какую-то статью, в итоге получилось что bridge-method это covariant return type. Т.е. сами не поняли о чем изначально речь.
...
Рейтинг: 0 / 0
Метод подставка
    #38046166
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ох, мой английский..... может по простому, по рабоче-крестьянски напишите в чем я не прав
...
Рейтинг: 0 / 0
Метод подставка
    #38046171
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90как много непонятных слов
Синтетические члены класса компилятор создаёт сам. Их можно увидеть через рефлексию или декомпиляцию. Но в исходном коде их нет. Чтобы реализовать возможность заменить возвращаемый тип, компилятор создаёт ещё один метод.
...
Рейтинг: 0 / 0
Метод подставка
    #38046173
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90ох, мой английский..... может по простому, по рабоче-крестьянски напишите в чем я не прав
B extends A - B ниже по иерархии. (хотя кто как себе представляет, поэтому терминами ниже-выше пользуются очень редко)
метод, в B может возращать значение с типом так же ниже по иерархи, переопределяя такой же метод из родительского класса А.
...
Рейтинг: 0 / 0
Метод подставка
    #38046175
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowiczredwhite90как много непонятных слов
Синтетические члены класса компилятор создаёт сам. Их можно увидеть через рефлексию или декомпиляцию. Но в исходном коде их нет. Чтобы реализовать возможность заменить возвращаемый тип, компилятор создаёт ещё один метод.

а какие ограничения накладываются на эти возвращаемые значения?
...
Рейтинг: 0 / 0
Метод подставка
    #38046176
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90ох, мой английский..... может по простому, по рабоче-крестьянски напишите в чем я не прав
Лучше читать, например, свежий перевод Философии Java, а не вот то вот. Ещё лучше читать английский. Грех этого не делать в 21м веке, когда куча словарей и переводчиков в секундном доступе.
...
Рейтинг: 0 / 0
Метод подставка
    #38046189
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90а какие ограничения накладываются на эти возвращаемые значения?

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
public class BaseCourseHelper extends CourseHelper {

    public BaseCourse getCourse(){
       System.out.println("BaseCourse");
       return new BaseCourse();
    }

    public Course getCourse(){ // Компилятор сам создаёт вот такой метод, который вызывает реализацию выше.
        return getCourse(); //Вам для обучения это нафиг не нужно :)
    }

}
...
Рейтинг: 0 / 0
Метод подставка
    #38046195
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

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

ну и в чем же я не прав то?
...
Рейтинг: 0 / 0
Метод подставка
    #38046196
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

кстати думаю купить себе в бумажном виде какую нить книгу, многие эту советуют
...
Рейтинг: 0 / 0
Метод подставка
    #38046200
javapecker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90,
а где вас обвиняли в неправоте?
...
Рейтинг: 0 / 0
Метод подставка
    #38046201
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90ну и в чем же я не прав то?
1. В определении ниже-выше.
2. В заявлении что пример в книге не верен.
...
Рейтинг: 0 / 0
Метод подставка
    #38046202
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90многие эту советуют
Филисофию? Или "Промышленое"?
...
Рейтинг: 0 / 0
Метод подставка
    #38046205
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowiczredwhite90многие эту советуют
Филисофию? Или "Промышленое"?

философию)

ну а мой пост насчёт класс А и класса B правилен?
...
Рейтинг: 0 / 0
Метод подставка
    #38046210
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90ну а мой пост насчёт класс А и класса B правилен?
Зачеркнуть "выше", написать "ниже".
13504100
...
Рейтинг: 0 / 0
Метод подставка
    #38046216
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

аааа вот Вы о чем.

только вот в примере
http://www.java-tips.org/java-se-tips/java.lang/covariant-return-types.html
оба класса возвращают this.
ведь наследник ниже по иерархии, чем предок?
...
Рейтинг: 0 / 0
Метод подставка
    #38046227
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90оба класса возвращают this.
ведь наследник ниже по иерархии, чем предок?
что они возвращают это вообще не важно. Важно как методы объявлены.
...
Рейтинг: 0 / 0
Метод подставка
    #38046231
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowiczredwhite90оба класса возвращают this.
ведь наследник ниже по иерархии, чем предок?
что они возвращают это вообще не важно. Важно как методы объявлены.

В конец запутался
...
Рейтинг: 0 / 0
Метод подставка
    #38046232
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90В конец запутался

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
public class BaseCourseHelper extends CourseHelper {

    public BaseCourse getCourse(){ // <-- объявление метода. то о чем вообще речь
       return null; // <-- возвращаемое значение, в целом, не важно в контексте этой темы
    }


}
...
Рейтинг: 0 / 0
Метод подставка
    #38046234
javapecker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90,
выше, ниже, я вообще могу слева направо или наискосок нарисовать. Blazkowicz правильно сказал, очень неудачные слова. Метод не обязан возвращать экземпляр того класса в котором он объявлен. Он просто может вести себя так же как класс, по аналогии. Если у класса появляется наследник, то и метод в наследнике может вернуть наследника того что возвращал в суперклассе.
...
Рейтинг: 0 / 0
Метод подставка
    #38046235
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowiczredwhite90В конец запутался

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
public class BaseCourseHelper extends CourseHelper {

    public BaseCourse getCourse(){ // <-- объявление метода. то о чем вообще речь
       return null; // <-- возвращаемое значение, в целом, не важно в контексте этой темы
    }


}



и какой я должен сделать вывод?
Не могли бы всю мысль высказать, а не по частям.
...
Рейтинг: 0 / 0
Метод подставка
    #38046236
javapecker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,
возвращаемое значение, в целом, не важно в контексте этой темы
по-моему тема как раз вокруг типа этого значения
...
Рейтинг: 0 / 0
Метод подставка
    #38046239
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90и какой я должен сделать вывод?
Вы спросили, я ответил.

redwhite90Не могли бы всю мысль высказать, а не по частям.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
class X{}
class Y extends X{}
class A{
    X get(){
        return null;
    }
}

class B extends A{
    Y get(){
        return null;
    }
}
...
Рейтинг: 0 / 0
Метод подставка
    #38046241
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
javapeckerredwhite90,
выше, ниже, я вообще могу слева направо или наискосок нарисовать. Blazkowicz правильно сказал, очень неудачные слова. Метод не обязан возвращать экземпляр того класса в котором он объявлен. Он просто может вести себя так же как класс, по аналогии. Если у класса появляется наследник, то и метод в наследнике может вернуть наследника того что возвращал в суперклассе.
Тогда почему компилится и выполняется следующий пример:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
public class Course { 
    public int id; 
    private String name;
    public Course(int i, String n) 
    { 
        id = i;
        name = n; 
    } 
    public String toString() 
    { 
        return "Название: " + name + "(" + id + ")"; 
    }
}



Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
public class BaseCourse extends Course { private int idTeacher;
public BaseCourse(int i, String n, int it) 
{ 
    super(i, n); 

    idTeacher = it; 
}
    public String toString() 
    { /* просто toString() нельзя!!! метод будет вызывать сам себя, что приведет к ошибке во время выполнения */ 
        return super.toString() + " препод.(" + idTeacher + ")"; 
    } 
}




Код: java
1.
2.
3.
4.
5.
6.
public class CourseHelper {
    public Course getCourse(){
        System.out.println("Course");
        return new Course(1,"2");
    }
}



Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
 */
package newpackage;


   public class BaseCourseHelper extends CourseHelper {
    public BaseCourse getCourse(){
        System.out.println("BaseCourse");
        return new BaseCourse(1,"1",999);
    }
}





Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
public class RunnerCourse {
    public static void main(String[] args)
    {
        CourseHelper bch = new BaseCourseHelper();
        Course course = bch.getCourse();
        //BaseCourse course = bch.getCourse();//ошибка компиляции
        System.out.println(bch.getCourse().id);
    }
}
...
Рейтинг: 0 / 0
Метод подставка
    #38046242
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
javapeckerпо-моему тема как раз вокруг типа этого значения
covariant return type это объявление типа возвращаемого значения для метода. Само же возвращаемое значение может быть любым.
...
Рейтинг: 0 / 0
Метод подставка
    #38046243
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90Тогда почему компилится и выполняется следующий пример:

А почему не должен? Где вы видете несоответствие примера и указанным объяснениям?
...
Рейтинг: 0 / 0
Метод подставка
    #38046245
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всёёёёё понял))) запутался в наследовании, что от чего)
...
Рейтинг: 0 / 0
Метод подставка
    #38046246
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за терпение)
...
Рейтинг: 0 / 0
Метод подставка
    #38046247
redwhite90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Но названия конечно талантливо придуманы))) кто придумал назвать наследника BaseИмяПредка
...
Рейтинг: 0 / 0
Метод подставка
    #38046249
javapecker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90,
тот же кто и подставку
...
Рейтинг: 0 / 0
Метод подставка
    #38046596
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
redwhite90Но названия конечно талантливо придуманы))) кто придумал назвать наследника BaseИмяПредка
Ну, а я о чем 13504018 ?
...
Рейтинг: 0 / 0
50 сообщений из 50, показаны все 2 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Метод подставка
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]