{"@context":"http://schema.org","@type":"Question","@id":"https://codegalaxy.io/courses/java-ru/questions/4f04f4b2e0d84304817f60029f6b2d0c/kakim-budet-rezultat-kompilyatsii-i-vypolneniya-dannogo-koda-class-a-interface-i","text":"Каким будет результат компиляции и выполнения данного кода?\n\u003cpre\u003e\u003ccode class\u003d\"java\"\u003e\nclass A {}\n\ninterface I {}\n\nclass B extends A implements I {}\n\npublic class OverloadTest {\n    public static void foo(A a) { System.out.print(\"A\"); }\n    private static void foo(B b) { System.out.print(\"B\"); }\n    private static void foo(I i) { System.out.print(\"I\"); }\n    \n    public static void main(String[] args) {        \n        A a \u003d new B();\n        OverloadTest.foo(a);\n        OverloadTest.foo((I) a);\n    }\n\n}\u003c/code\u003e\u003c/pre\u003e","headline":"Каким будет результат компиляции и выполнения данного кода?\n\u003cpre\u003e\u003ccode class\u003d\"java\"\u003e\nclass A {}\n\ninterface I {","learningResourceType":["programming test","programming course","programming question"],"isPartOf":{"@type":"Course","@id":"https://codegalaxy.io/courses/java-ru","url":"https://codegalaxy.io/courses/java-ru","name":"Java Quiz","description":"Java - объектно-ориентированный кросс-платформенный язык программирования, предназначенный для удобства чтения и интероперабельности. Java обычно читается как легкая и простая версия языка Си++. Тем не менее, Java может использоваться как полная версия для создания приложений, которые могут работать на всех платформах, поддерживающих Java, без необходимости перекомпиляции. В 2020 году Java является самым популярным языком программирования, с которым работают более 9 миллионов разработчиков. \u003cbr\u003e\nЭтот обучающий курс полностью посвящен \u003cstrong\u003eJava языку\u003c/strong\u003e, где вы можете проверить свои знания и ответить на \u003cstrong\u003e вопросы интервью по Java\u003c/strong\u003e. Вы ответите на теоретические и практические вопросы, которые проверяют ваши навыки на понимание \u003cstrong\u003e Java-кода\u003c/strong\u003e и поиска ошибок.\n\u003cbr\u003e\nВы можете вернуться к этому java курсу когда захотите, так как он постоянно обновляется и добавляются новые вопросы и задачки!\n\nПереведено с помощью www.DeepL.com/Translator (бесплатная версия)","provider":{"@type":"Organization","@id":"https://codegalaxy.io","name":"CodeGalaxy","logo":{"@type":"ImageObject","url":"https://codegalaxy.io/app/assets/images/g_code.png","height":"513","width":"513"},"description":"Project aimed to provide new ways in learning programming languages and preparing for the interview."},"image":{"@type":"ImageObject","url":"https://codegalaxy.io/app/assets/images/fb/16x9/share-java-ru.png","height":"630","width":"1200"}},"image":{"@type":"ImageObject","url":"https://codegalaxy.io/app/assets/images/fb/16x9/share-java-ru.png","height":"630","width":"1200"},"answerCount":6,"potentialAction":[{"@type":"AssessAction","object":{"@type":"Question","@id":"https://codegalaxy.io/courses/java-ru/questions/4f04f4b2e0d84304817f60029f6b2d0c/kakim-budet-rezultat-kompilyatsii-i-vypolneniya-dannogo-koda-class-a-interface-i"}},{"@type":"ChooseAction","actionOption":[{"@type":"Answer","@id":"https://codegalaxy.io/courses/java-ru/questions/4f04f4b2e0d84304817f60029f6b2d0c/kakim-budet-rezultat-kompilyatsii-i-vypolneniya-dannogo-koda-class-a-interface-i#19304","url":"https://codegalaxy.io/courses/java-ru/questions/4f04f4b2e0d84304817f60029f6b2d0c/kakim-budet-rezultat-kompilyatsii-i-vypolneniya-dannogo-koda-class-a-interface-i#19304","text":"AA","dateCreated":"2020-02-06"},{"@type":"Answer","@id":"https://codegalaxy.io/courses/java-ru/questions/4f04f4b2e0d84304817f60029f6b2d0c/kakim-budet-rezultat-kompilyatsii-i-vypolneniya-dannogo-koda-class-a-interface-i#19305","url":"https://codegalaxy.io/courses/java-ru/questions/4f04f4b2e0d84304817f60029f6b2d0c/kakim-budet-rezultat-kompilyatsii-i-vypolneniya-dannogo-koda-class-a-interface-i#19305","text":"AI","dateCreated":"2020-02-06"},{"@type":"Answer","@id":"https://codegalaxy.io/courses/java-ru/questions/4f04f4b2e0d84304817f60029f6b2d0c/kakim-budet-rezultat-kompilyatsii-i-vypolneniya-dannogo-koda-class-a-interface-i#19306","url":"https://codegalaxy.io/courses/java-ru/questions/4f04f4b2e0d84304817f60029f6b2d0c/kakim-budet-rezultat-kompilyatsii-i-vypolneniya-dannogo-koda-class-a-interface-i#19306","text":"BB","dateCreated":"2020-02-06"},{"@type":"Answer","@id":"https://codegalaxy.io/courses/java-ru/questions/4f04f4b2e0d84304817f60029f6b2d0c/kakim-budet-rezultat-kompilyatsii-i-vypolneniya-dannogo-koda-class-a-interface-i#19307","url":"https://codegalaxy.io/courses/java-ru/questions/4f04f4b2e0d84304817f60029f6b2d0c/kakim-budet-rezultat-kompilyatsii-i-vypolneniya-dannogo-koda-class-a-interface-i#19307","text":"BI","dateCreated":"2020-02-06"},{"@type":"Answer","@id":"https://codegalaxy.io/courses/java-ru/questions/4f04f4b2e0d84304817f60029f6b2d0c/kakim-budet-rezultat-kompilyatsii-i-vypolneniya-dannogo-koda-class-a-interface-i#19308","url":"https://codegalaxy.io/courses/java-ru/questions/4f04f4b2e0d84304817f60029f6b2d0c/kakim-budet-rezultat-kompilyatsii-i-vypolneniya-dannogo-koda-class-a-interface-i#19308","text":"Ошибка компиляции","dateCreated":"2020-02-06"}],"object":{"@type":"Answer","@id":"https://codegalaxy.io/courses/java-ru/questions/4f04f4b2e0d84304817f60029f6b2d0c/kakim-budet-rezultat-kompilyatsii-i-vypolneniya-dannogo-koda-class-a-interface-i#19305","url":"https://codegalaxy.io/courses/java-ru/questions/4f04f4b2e0d84304817f60029f6b2d0c/kakim-budet-rezultat-kompilyatsii-i-vypolneniya-dannogo-koda-class-a-interface-i#19305","text":"AI","dateCreated":"2020-02-06"}}],"audience":{"@type":"EducationalAudience","audienceType":["developers","programmers"],"educationalRole":["Specialist","Student"],"alternateName":"Java Programmers","name":"Java Developers","sameAs":["https://en.wikipedia.org/wiki/Programmer","https://en.wikipedia.org/wiki/Software_developer","https://en.wikipedia.org/wiki/Software_engineer","https://en.wikipedia.org/wiki/Web_developer"]},"dateCreated":"2020-02-06","acceptedAnswer":[{"@type":"Answer","@id":"https://codegalaxy.io/courses/java-ru/questions/4f04f4b2e0d84304817f60029f6b2d0c/kakim-budet-rezultat-kompilyatsii-i-vypolneniya-dannogo-koda-class-a-interface-i#js-expander-trigger","url":"https://codegalaxy.io/courses/java-ru/questions/4f04f4b2e0d84304817f60029f6b2d0c/kakim-budet-rezultat-kompilyatsii-i-vypolneniya-dannogo-koda-class-a-interface-i#js-expander-trigger","text":"При перегрузке(overloading) методов решение о том какой именно метод будет вызван принимается на этапе компиляции, в отличие от полиморфизма когда это делается в процессе выполнения.\u003cbr\u003e\n1: А теперь рассмотрим OverloadTest.foo(a). Компилятор не знает на какой именно объект типа A будет ссылаться переменная \u0027a\u0027, компилятор только знает тип переменной \u0027a\u0027, а именно A. Исходя из типа переменной компилятор принимает решение вызвать метод foo(A a).\u003cbr\u003e\n2: OverloadTest.foo((I) a). В этом случае компилятор получает явное указание, что аргумент имеет тип I, следовательно будет вызван foo(I i).\u003cbr\u003e\u003cbr\u003e\n\nОтдельный случай это когда аргумент указан как null, т.е. OverloadTest.foo(null). В этом случае будет вызван метод с аргументом имеющим тип наиболее высокий в иерархии, т.е. в данном случае foo(B b).","about":{"@type":"Question","@id":"https://codegalaxy.io/courses/java-ru/questions/4f04f4b2e0d84304817f60029f6b2d0c/kakim-budet-rezultat-kompilyatsii-i-vypolneniya-dannogo-koda-class-a-interface-i"},"upvoteCount":1,"dateCreated":"2020-02-06"},{"@type":"Answer","@id":"https://codegalaxy.io/courses/java-ru/questions/4f04f4b2e0d84304817f60029f6b2d0c/kakim-budet-rezultat-kompilyatsii-i-vypolneniya-dannogo-koda-class-a-interface-i#19305","url":"https://codegalaxy.io/courses/java-ru/questions/4f04f4b2e0d84304817f60029f6b2d0c/kakim-budet-rezultat-kompilyatsii-i-vypolneniya-dannogo-koda-class-a-interface-i#19305","text":"AI","dateCreated":"2020-02-06","upvoteCount":1}],"suggestedAnswer":[{"@type":"Answer","@id":"https://codegalaxy.io/courses/java-ru/questions/4f04f4b2e0d84304817f60029f6b2d0c/kakim-budet-rezultat-kompilyatsii-i-vypolneniya-dannogo-koda-class-a-interface-i#19304","url":"https://codegalaxy.io/courses/java-ru/questions/4f04f4b2e0d84304817f60029f6b2d0c/kakim-budet-rezultat-kompilyatsii-i-vypolneniya-dannogo-koda-class-a-interface-i#19304","text":"AA","dateCreated":"2020-02-06","upvoteCount":0},{"@type":"Answer","@id":"https://codegalaxy.io/courses/java-ru/questions/4f04f4b2e0d84304817f60029f6b2d0c/kakim-budet-rezultat-kompilyatsii-i-vypolneniya-dannogo-koda-class-a-interface-i#19306","url":"https://codegalaxy.io/courses/java-ru/questions/4f04f4b2e0d84304817f60029f6b2d0c/kakim-budet-rezultat-kompilyatsii-i-vypolneniya-dannogo-koda-class-a-interface-i#19306","text":"BB","dateCreated":"2020-02-06","upvoteCount":0},{"@type":"Answer","@id":"https://codegalaxy.io/courses/java-ru/questions/4f04f4b2e0d84304817f60029f6b2d0c/kakim-budet-rezultat-kompilyatsii-i-vypolneniya-dannogo-koda-class-a-interface-i#19307","url":"https://codegalaxy.io/courses/java-ru/questions/4f04f4b2e0d84304817f60029f6b2d0c/kakim-budet-rezultat-kompilyatsii-i-vypolneniya-dannogo-koda-class-a-interface-i#19307","text":"BI","dateCreated":"2020-02-06","upvoteCount":0},{"@type":"Answer","@id":"https://codegalaxy.io/courses/java-ru/questions/4f04f4b2e0d84304817f60029f6b2d0c/kakim-budet-rezultat-kompilyatsii-i-vypolneniya-dannogo-koda-class-a-interface-i#19308","url":"https://codegalaxy.io/courses/java-ru/questions/4f04f4b2e0d84304817f60029f6b2d0c/kakim-budet-rezultat-kompilyatsii-i-vypolneniya-dannogo-koda-class-a-interface-i#19308","text":"Ошибка компиляции","dateCreated":"2020-02-06","upvoteCount":0}]}