В комментариях к видео почему-то больше информации, чем в самом видео. Понять содержимое видео довольно сложно. Особенно из-за этих постоянных "эээ", "аааа", "ну как бы" и прочих затупов. Автору следовало бы написать текст заранее, до снятия видео. Именно текст того, что он будет говорить, а не показывать. Хотя второе тоже было бы неплохо. Ну и "сложно придумать вот так сразу" тоже не мешало бы заранее продумать. Не примите это за хейт, троллинг, оскорбление или ещё что в этом же роде, ваши уроки не так плохи, как можно подумать, но вам явно есть куда развиваться.
Правильно я понял? Базовый класс может хранить ссылки на любых своих наследников, но не наоборот? И мы могли бы спокойно указать Child child = new Child(); либо Parent child = new Child();
что parent, что child будут иметь доступ к одним и тем же методам, так зачем писать "Parent parent = new Child();" и путаться, если можно написать "Child child = new Child(); " ?
Наверное поздно отвечаю, но это нужно для полиморфизма - чтобы через указатель на родителя можно было пользоваться потомками. Например, если от класса Parent наследуется не Child, а два класса: Brother и Sister, то через указатель на Parent можно пользоваться обоими классами. Примерно так: "Parent object; boolean IsMan; //Присовение пола if (IsMan) object = new Brother(); else object = new Sister();" И далее так работать с этим объектом, даже не смотря на то, что в точности неизвестно каким именно классом он является. По крайней мере, так я понимаю.
подскажите в чём здесь ошибка??почему не используется строка @Override , int distance= howlong*180; public class Car { public void start(){ System.out.println("Pognalu"); } public void stop(){ System.out.println("Finish"); } public int drive(int howlong){ int distance = howlong*60; System.out.println(distance + " metriv"); return distance; }
} public class JamesBondCar extends Car { @Override public int drive(int howlong){ int distance= howlong*180; System.out.println(distance + " metriv"); return distance; } public static void main(String[] args) { Car myCar = new Car(); myCar.start(); myCar.stop(); myCar.drive(2); myCar.start(); myCar.stop(); myCar.drive(5); } }
@@atlasua2021 нет, перегрузкой называют еще одну версию (или несколько) одного и того же метода. Каждая версия отличается от остальных версии списком аргументов.Сами аргументы могут идентифицировать метод по 3 признакам: 1.По количеству 2.По порядку 3. По типу Переопределение это изменение тело унаследованного метода от родительского класса в дочернем классе. Как видно, не одно и тоже.
не понимаю, а зачем мудрить и писать: Parent child = new Child()? если можно написать Child child = new Child(). к чему это? вопрос действительно волнует, может я чего-то не понял) если кто-то прочитал мой комментарий и знает ответ, не обязательно автор видео, буду рад скорейшему ответу)
@@cryptoInNutshellR Это пример полиморфизма в действии, т.е. ты ссылаешь объект типа Child на объект типа Parent, в пример можно привести, если ты знаком с коллекциями, то хорошей практикой является написание List list = new ArrayList(), т.к. можно представить себе такую ситуацию, что ты написал код, который работает, используя ArrayList, потом тебе говорят, мол возьми и поменяй код, используя LinkedList, то в таком случае тебе нужно будет просто написать list = new LinkedList(). Т.е. в классе родителя у тебя есть список доступных методов, а конкретная реализация будет справа от слова new. В моем примере у родительского класса List есть просто список тех методов, которые можно вызывать, а конкретную реализацию можно выбирать исходя из твоих задач. Надеюсь не сильно запутал, пытался как-то более к практике применительно рассказать.
В комментариях к видео почему-то больше информации, чем в самом видео. Понять содержимое видео довольно сложно. Особенно из-за этих постоянных "эээ", "аааа", "ну как бы" и прочих затупов.
Автору следовало бы написать текст заранее, до снятия видео. Именно текст того, что он будет говорить, а не показывать. Хотя второе тоже было бы неплохо. Ну и "сложно придумать вот так сразу" тоже не мешало бы заранее продумать.
Не примите это за хейт, троллинг, оскорбление или ещё что в этом же роде, ваши уроки не так плохи, как можно подумать, но вам явно есть куда развиваться.
Спасибо за труды. Если что, поправите, возвращаемый тип данных у родительского метода и наследника должны быть одинаковыми.
все понятно
Ничего не видно(
Правильно я понял? Базовый класс может хранить ссылки на любых своих наследников, но не наоборот? И мы могли бы спокойно указать Child child = new Child(); либо Parent child = new Child();
Да правильно
в чем разница между "Parent parent = new Child();" и "Child child = new Child(); " ?
что parent, что child будут иметь доступ к одним и тем же методам, так зачем писать "Parent parent = new Child();" и путаться, если можно написать "Child child = new Child(); " ?
Наверное поздно отвечаю, но это нужно для полиморфизма - чтобы через указатель на родителя можно было пользоваться потомками. Например, если от класса Parent наследуется не Child, а два класса: Brother и Sister, то через указатель на Parent можно пользоваться обоими классами. Примерно так:
"Parent object;
boolean IsMan;
//Присовение пола
if (IsMan)
object = new Brother();
else
object = new Sister();"
И далее так работать с этим объектом, даже не смотря на то, что в точности неизвестно каким именно классом он является. По крайней мере, так я понимаю.
@@dirakon8819 Наверное поздно отвечаю, но ты ответил не поздно, помог как минимум мне
снова 360 шояп... до етого и 1040 и 720 работало в чем проблемос друже
360 качество(
Java полноценный язык по програмированию?? или к нему требуется дописать на других языках?
пиздец вопрос тупой
подскажите в чём здесь ошибка??почему не используется строка @Override , int distance= howlong*180;
public class Car {
public void start(){
System.out.println("Pognalu");
}
public void stop(){
System.out.println("Finish");
}
public int drive(int howlong){
int distance = howlong*60;
System.out.println(distance + " metriv");
return distance;
}
}
public class JamesBondCar extends Car {
@Override
public int drive(int howlong){
int distance= howlong*180;
System.out.println(distance + " metriv");
return distance;
}
public static void main(String[] args) {
Car myCar = new Car();
myCar.start();
myCar.stop();
myCar.drive(2);
myCar.start();
myCar.stop();
myCar.drive(5);
}
}
Car myCar = new JamesBondCar(); вместо Car myCar = new Car();
спасибо уже сам разобрался.
часто путаешься в переопределении и перегрузке
Все люди ошибаются и это нормально
@@sherzodakhmedov6678 интересно, есть ли смысл отвечать спустя 3 года?
@@sherzodakhmedov6678 чтобы правильно понять нужно правильно назвать
ни одно и тоже?
@@atlasua2021 нет, перегрузкой называют еще одну версию (или несколько) одного и того же метода. Каждая версия отличается от остальных версии списком аргументов.Сами аргументы могут идентифицировать метод по 3 признакам:
1.По количеству
2.По порядку
3. По типу
Переопределение это изменение тело унаследованного метода от родительского класса в дочернем классе.
Как видно, не одно и тоже.
360 и ничего не видно
а на слух очень сложно понять все
не понимаю, а зачем мудрить и писать: Parent child = new Child()? если можно написать Child child = new Child(). к чему это? вопрос действительно волнует, может я чего-то не понял)
если кто-то прочитал мой комментарий и знает ответ, не обязательно автор видео, буду рад скорейшему ответу)
вот ответ ua-cam.com/video/BYu8gT0hGCQ/v-deo.html
@@husivm спасибо, прямо сейчас ознакомлюсь
@@husivm вот совсем не раскрыли таки, почему Parent child = new Child()? если можно написать Child child = new Child().
@@cryptoInNutshellR Это пример полиморфизма в действии, т.е. ты ссылаешь объект типа Child на объект типа Parent, в пример можно привести, если ты знаком с коллекциями, то хорошей практикой является написание List list = new ArrayList(), т.к. можно представить себе такую ситуацию, что ты написал код, который работает, используя ArrayList, потом тебе говорят, мол возьми и поменяй код, используя LinkedList, то в таком случае тебе нужно будет просто написать list = new LinkedList(). Т.е. в классе родителя у тебя есть список доступных методов, а конкретная реализация будет справа от слова new. В моем примере у родительского класса List есть просто список тех методов, которые можно вызывать, а конкретную реализацию можно выбирать исходя из твоих задач. Надеюсь не сильно запутал, пытался как-то более к практике применительно рассказать.
@@eugenesavonkin6467 огромное спасибо за максимально развёрнутый ответ! теперь стало яснее. нигде так подробно не находил
За видео дизлайк, инфа для подготовки к собесу вообще не годится, автор сам не знает чем переопределение от перегрузки отличаются