Результаты прохождения теста ООП в Java пользователем ilya201177

Результат прохождения теста "ООП в Java" - Пройден

+37

  • Кто проходил: ilya201177
  • Дата прохождения: 04.12.2018
Что будет в результате копиляции и выполнения следующего кода?
public class Okey extends D{  
   public static void doSome(int[]...a){ 
       for(int[] z:a){ 
           System.out.println(z[0]); 
       } 
   } 
   public static void main(String[] args) { 
       Okey o=new Okey(); 
       int[] a={7,5,48}; 
       int[] b={4,2,3}; 
       o.doSome(a,b); 
 
   } 
} 
class D{ 
   public static void doSome(int[]...a){ 
       for(int[] z:a){ 
           System.out.println(z[1]); 
       } 
   } 
}
Ваши ответы
7 4
Что произойдёт при попытке компиляции следующего кода:
class A extends B {} 
class B extends C {} 
class C extends A {} 
Ваши ответы
Ошибка компиляции
Объяснение:

Компилятор обнаружит, что класс A является своим наследником, и произойдёт ошибка компиляции.

Что будет напечатано на экран в результате компиляции и выполнения кода?
public class Test { 
   public static void main(String[] args){ 
       A a = new B(); 
       a.test(5); 
   } 
} 
class A { 
   public void test(Object obj){ 
       System.out.println("Object"); 
   } 
} 
class B extends A { 
   public void test(Integer obj){ 
       System.out.println("Integer"); 
   } 
} 
Ваши ответы
Объяснение:

Вызов метода test не является полиморфным, потому что метод public void test(Object obj) не переопределён, а всего лишь перегружен в потомке.

Что будет выведено на консоль в результате выполнения следующего кода:
class B { 
   private B() { 
       System.out.print("1"); 
   } 
 
   protected B(String str) { 
       System.out.print("2"); 
   } 
} 
 
public class A extends B { 
   public A() { 
       this("smth"); 
   } 
 
   public A(String str) { 
   } 
 
   public static void main(String[] args) { 
       A a = new A(); 
   } 
} 
Ваши ответы
Ошибка компиляции
Объяснение:

В конструкторе класса A от String недоступен конструктор суперкласса.

Что напечатает следующий код:
class Y { 
 public Y() { System.out.print("Y"); } 
} 
class Z { 
 public Z() { System.out.print("Z"); } 
} 
class X extends Z { 
 private Y m_objY = new Y(); 
 public X() { System.out.print("X"); } 
 
 public static void main(String[] args) { 
     X x = new X(); 
 }  
} 
Ваши ответы
ZYX
Объяснение:

Согласно JLS #12.5, объект инициализируется в следующем порядке:
1. Инициализируется суперкласс.
2. Инициализируются поля и выполняются инициализационные блоки, в порядке следования.
3. Выполняется оставшееся тело дочернего конструктора.
При этом, инициализация суперкласса происходит аналогичным образом.

Какие утверждения верны по отношению к данному коду:
class A{ 
  A(int i){ //1 
  } 
} 
class B extends A{ //2 
}
Ваши ответы
компилятор попытается создать по умолчанию конструктор для класса В
ошибка компиляции в строке 2
Объяснение:

В переводе на русский: если в классе не содержится конструктора, то неявно создаётся конструктор по умолчанию. Конструктор по умолчанию просто вызывает конструктор по умолчанию из суперкласса. Если в суперклассе такого нет, то возникает ошибка компиляции.
Таким образом, поведение компилятора для данного примера кода однозначно описано в спецификации.

Каким будет вывод после выполнения данной программы?
class A { } 
class B extends A { } 
abstract class C { 
   abstract void doAction(A a); 
   void start(A a){ 
       doAction(a); 
   } 
} 
class D extends C { 
   void doAction(A a) { 
       System.out.println("A action"); 
   } 
   void doAction(B b) { 
       System.out.println("B action"); 
   } 
} 
public class Test { 
   public static void main(String[] args) { 
       new D().start(new B()); 
   } 
} Каким будет вывод после выполнения данной программы?
Ваши ответы
A action
Что выдаст следующий код?
class Tochka { 
   int x,y; 
   Tochka() { 
       System.out.println("Tochka created!"); 
   } 
   Tochka(int x,int y) { 
       this.x=x; 
       this.y=y; 
       System.out.println("Tochka created and signed!"); 
   } 
   public String name(){ 
       return "_Tochka"; 
   } 
} 
class Tochka3D extends Tochka { 
   int z; 
   Tochka3D(int x,int y,int z) { 
       super(x,y); 
       this.z=z; 
       System.out.println("Tochka3D created!"); 
   } 
   public String name(){ 
       return z+"_Tochka3D"; 
   } 
} 
 
public class MyFirst { 
   static public void main(String[] args) { 
       Tochka3D tochkaOne = new Tochka3D(1,2,3); 
       Tochka tochkaTwo = tochkaOne; 
       System.out.println(tochkaTwo.name()); //1 
   } 
} 
Ваши ответы
Tochka created and signed!
Tochka3D created!
3_Tochka3D
Объяснение:

Так как переменная суперкласса может ссылаться на объект подкласса, то ей доступны все методы подкласса, которые были доступны и суперклассу, даже если они были переопределены. В нашем случае это метод name(), который выводит название подкласса "_Tochka3D".

Каким термином лучше всего описать отношение между классами Department и Employee:
public class Department { 
   private int departmentId; 
   private Set<Employee> employees; 
} 
 
public class Employee { 
   private int employeeId; 
   private String employeeName; 
} 
Ваши ответы
Композиция
Объяснение:

Композиция описывает сильное отношение между объектами (синоним - "состоит из"): один объект является неотъемлемой частью другого. Агрегация же описывает более слабое отношение (синоним - "содержит").

Что при вставке в строку 7 позволит выполнить код без ошибок:
01. class A { } 
02. class B extends A { } 
03. class C extends B { 
04.   public static void main(String[] args) { 
05.      A obj1 = new A(); 
06.      C obj2 = new C(); 
07.      // програмный код 
08.      C obj3 = (C)obj1; 
09.   } 
10. }