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

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

+37

  • Кто проходил: ilya201177
  • Дата прохождения: 23.01.2019
Какой результат компиляции и выполнения программы?
public class Okey implements A.B{ 
   interface C{ 
       void stop(); 
   } 
   public int goTo(){ 
          System.out.println("Идем гулять в парк"); 
      return 5; 
   } 
   public static void main(String[] args) { 
               Okey o=new Okey(); 
       o.goTo(); 
   } 
} 
interface A{ 
   void go(); 
   interface B{ 
       int goTo(); 
   } 
}
Ваши ответы
Идем гулять в парк
Что произойдет в результате компиляции и выполнения кода:
01: abstract class A { 
02:     int a = 8; 
03:     public A() { show(); } 
04:     abstract void show(); 
05: } 
06:  
07: class B extends A { 
08:     int a = 90; 
09:     void show() { System.out.println("" + a); } 
10:  
11:     public static void main(String args[]) { 
12:         new B(); 
13:     } 
14: } 
Ваши ответы
Будет напечатано "0" без кавычек
Объяснение:

При вызове метода show из конструктора базового класса, поле a еще не будет проинициализировано

Дан код:
class Alpha { 
   static String s = ""; 
   protected Alpha() { s += "alpha "; } 
} 
 
class SubAlpha extends Alpha { 
   private SubAlpha() { s += "sub "; } 
} 
 
public class SubSubAlpha extends Alpha { 
   private SubSubAlpha() { s += "subsub "; } 
   public static void main(String[] args) { 
       new SubSubAlpha(); 
       System.out.println(s); 
   } 
} 
 
Какой будет результат?
Ваши ответы
alpha subsub
Что произойдет в результате компиляции и выполнения следующего кода:
public class Overload { 
   public static void main(String[] args) { 
       Test t=new Test(); 
       t.clone(); 
       System.out.println(t.i); 
   } 
} 
class Test{ 
   int i; 
   public clone(){ 
       i=15; 
   } 
}
Ваши ответы
Ошибка компиляции
Объяснение:

clone() - метод класса Object. Во-первых, все наименования методов класса Object являются зарезервированными словами, и определять свой собственный метод, название которого будет одим из этих слов - нельзя. Во-вторых, сигнатура метода не соотвествует clone() из Object.

Что <u>позволяет</u> реализовать множественное наследование в Java?
Ваши ответы
интерфейсы
Какой будет результат компиляции и выполнения кода?
public class Parent { 
   private void whoAreYou(){ System.out.println("I'm parent"); } 
 
   public static void main(String []args){ 
       Parent p = new Child(); 
       p.whoAreYou(); 
   } 
} 
 
class Child extends Parent { 
   public void whoAreYou(){ System.out.println("I'm child"); } 
} 
Ваши ответы
I'm parent
Что будет выведено на экран в результате выполнения следующего кода?
public class Test { 
   private static int s; 
   Test() { 
       s = 0; 
    } 
 
   public static strictfp void main(String[] args) throws RuntimeException { 
       Test t = new Test(); 
       t.s = 5; 
 
       System.out.println(s == t.s); 
   } 
} 
Ваши ответы
true
Какой, четвертый принцип ООП, часто добавляют к всем извесной троице?
Ваши ответы
Абстракция
Что произойдет в результате компиляции и выполнения данного кода ?
class Top{} 
class Sub extends Top{} 
public class Test{ 
 public static void main(String[] args){ 
   Top t = new Top(); 
   Sub s = (Sub) t; 
  } 
} 
Ваши ответы
Cкомпилируется и запустится без ошибок
Объяснение:

Объект Предка не может быть приведен к объекту Потомка. ClassCastException

Какие независимые изменения можно сделать в следующем фрагменте кода, чтобы он компилировался (укажите все подходящие варианты)?
public class B implements Inter<String> {     // 1 
   public static void main(String[] args) {  
       new B().fun(); 
   }  
   public String fun() { 
       System.out.println("B"); 
       return null; 
    } 
}  
class C extends B implements Inter<Boolean> {  // 2 
}  
interface Inter<T> { 
    T fun(); 
} 
Ваши ответы
Убрать "extends B" из строки //2 и добавить реализацию метода fun в класс C
Убрать "implements Inter<Boolean>" из строки //2
Убрать "implements Inter<String>" из строки //1
Объяснение:

Код не компилируется, так как класс не может реализовывать два _различных_ варианта _параметризованного_ интерфейса, в данном случае это Inter<String> и Inter<Boolean>. Вариант Убрать "implements Inter<String>" из строки //1 - тоже не подходит, так как в этом случае в классе C должен быть метод fun, возвращающий Boolean, но в классе B уже есть метод с такой сигнатурой, возвращающий String.