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

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

+50

  • Кто проходил: ilya201177
  • Дата прохождения: 31.01.2019
Что будет в результате компиляции и выполнения данного кода?
public class Testing { 
   private int value = 1; 
 
   public int getValue() { 
       return value; 
   } 
 
   public void changeVal(int value) { 
       value = value; 
   } 
 
   public static void main(String args[]) { 
       int a = 2; 
       Testing c = new Testing(); 
       c.changeVal(a); 
       System.out.print(c.getValue()); 
   } 
} 
Ваши ответы
1
Как можно переопределить метод meth2() в классе Sub?
abstract class Base { 
   public abstract void meth1(); 
   public void meth2() { } 
} 
 
abstract class Sub extends Base { 
   public void meth1() { } 
   ... // переопределенный метод 
} 
Ваши ответы
public abstract void meth2();
Что произойдёт в результате выполнения даного кода:
public class Tree { 
   int leavesCount; 
   String treeName; 
   Tree (int leaves){ 
       this.leavesCount = leaves; 
       System.out.println("int constructor"); 
   } 
   Tree (String treeName, int leaves){ 
       this(leaves); 
       this(treeName); 
       System.out.println("(String, int) constructor"); 
   } 
   Tree (String treeName){ 
       this.treeName = treeName; 
       System.out.println("String constructor"); 
   } 
   Tree () { 
       this("huge tree", 50000); 
       System.out.println("constructor without parameters"); 
   } 
   void printLeavesCount(){ 
       System.out.println("leavesCount = " + leavesCount + " treeName = " + treeName); 
   } 
   public static void main (String[] args) { 
       Tree tree = new Tree(); 
       tree.printLeavesCount(); 
   } 
} 
Ваши ответы
Ошибка компиляции
Объяснение:

При вызове одного конструктора через this вызывать второй запрещается

Что <u>позволяет</u> реализовать множественное наследование в Java?
Ваши ответы
интерфейсы
Даны интерфейсы:
interface A { 
   Integer a(); 
} 
interface B { 
   Number a(); 
} 
 
Какие фрагменты кода из перечисленных успешно скомпилируются?
Ваши ответы
class C implements A, B { 
   public Integer a() { 
       return null; 
   } 
} 
abstract class C implements A, B { 
} 
Что будет выведено на консоль в результате выполнения следующего кода:
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 Box { 
   int b,w; 
   void Box(int b, int w) { 
       this.b = b; 
       this.w = w; 
   } 
} 
public class MyBox extends Box { 
   MyBox() { 
       super(10, 15); 
       System.out.println(b + "," + w); 
   } 
   static public void main(String args[]) { 
       MyBox box = new MyBox(); 
   } 
} 
Ваши ответы
ничего из выше перечисленного
Объяснение:

Код не скомпилируется, поскольку класс Box не имеет конструктора Box(int b,int w) - там объявлен обычный метод void Box(int b,int w), но с именем, как у класса.

Птицы летают, ящерицы ползают. А птеродактили и летают, и ползают. Что наиболее верно по отношению к этим утверждениям?
Ваши ответы
class Pterodactyl implements Crawlable, Flyable{}
Каким будет результат компиляции и выполнения следующего кода?
public class Go {  
 public static void main(String[] args) { 
   System.out.print(C.x); 
 }  
}  
 
class A { 
 static {  
   System.out.print("A"); 
 }        
}   
class B extends A{ 
 public static int x = 5;  
 static { 
   System.out.print("B"); 
 }  
}  
class C extends B{ 
 static {  
   System.out.print("C");  
   System.exit(0); 
 } 
}
Ваши ответы
AB5
Объяснение:

Класс С не будет загружаться, то есть статический блок в классе С не будет выполняться! Почему?
Загрузка класса выполнятся в таких условиях:
Обращение к СТАТИЧЕСКИМ ПЕРЕМЕННЫМ КЛАССА, статическому методу, создание объекта данного класса и тд..
В данном случае мы обращаемся ИМЕННО К СТАТИЧЕСКОЙ ПЕРЕМЕННОЙ КЛАССА B но не к статической переменной класса С - C.x - данная запись конечно критична, но жизнеспособна.
Исходя от этого мы делаем вывод:
1) Статическая переменная x принадлежит классу B, но так как B extends A - то самым первым выполнится статический блок в классе A
2) Выполнение статического блока в классе B
3) Ну и вывод - AB5

Какие исключения ПОТЕНЦИАЛЬНО могут возникнуть при присваивании одной переменной объектного типа, другой переменной ЛЮБОГО типа:
a = b;
при условии что компиляция прошла успешно.
Объяснение:

OutOfMemoryError - памяти может не хватить для autoboxing-а, например при присваивании объекту типа Integer значения int.