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

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

+78

  • Кто проходил: MartinK
  • Дата прохождения: 15.05.2019
Какие из следующих утверждений истинные?
Ваши ответы
абстрактный метод не может быть статическим
не статический метод не может быть вызван из статического без указания экземпляра класса
Что будет в результате копиляции и выполнения следующего кода?
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
Что будет в результате компиляции и выполнения данного кода?
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
Выберите все утверждения, которые верны по отношению к данному коду:
1: public interface Movable { 
2:       int step = 10; 
3:       void moveMe(); 
4: } 
 
5: class Circle implements Movable { 
6:      void moveMe(){ 
7:        step = 20; 
8:        System.out.println("Moving Circle with step="+step); 
9:      } 
 
10:      public static void main(String[] args) { 
11:        Movable c = new Circle(); 
12:        c.moveMe(); 
13:    } 
14: } 
Ваши ответы
Ошибка компиляции в строке 6
Объяснение:

Все методы интерфейса неявно public abstract, переменные - final static. Указывать это явно необязательно. В строке 6 класс Circle пытается переопределить public метод с уменьшением области видимости. В строке 7 - назначить новое значение final переменной.

Что будет выведено в результате выполнения кода:
public class test  
{   static void f(int a) 
    { 
       System.out.println("int"); 
    } 
 static  void f(Integer a) 
  { 
      System.out.println("Integer"); 
  } 
static   void f(Object a) 
   { 
      System.out.println("Object"); 
   } 
   static public void main(String[] args) 
  {     
      Object i = new Integer(10); 
      f(i); 
  } 
 
} 
Ваши ответы
Объяснение:

Обьяснение 1. Вариант с "int" отпадает так как в метод была передана ссылка, а не примитивный тип данных, далее можно заметить что статический метод f не переопределен, а перегружен, значит выбирается метод, основываясь на типе ссылки(Object) , а не на типе обьекта(Integer)

Какой будет результат компиляции и выполнения кода?
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
Даны интерфейсы:
interface A { 
   Integer a(); 
} 
interface B { 
   Number a(); 
} 
 
Какие фрагменты кода из перечисленных успешно скомпилируются?
Ваши ответы
class C implements A, B { 
   public Integer a() { 
       return null; 
   } 
} 
abstract class C implements A, B { 
} 
Дан следующий код:
01. class Plant { 
02.     String getName() { return "plant"; } 
03.     Plant getType() { return this; } 
04. } 
05. class Flower extends Plant { 
06.    // insert code here 
07. } 
08. class Tulip extends Flower { } 
09. public class Test { 
10.     public static void main(String...arg) { }  
11. } 
 
Что будет допустимо вставить в строчку 6 чтобы код компилировался?
Ваши ответы
String getType(int i) { return "this"; }
Flower getType() { return this; }
Абстрактный класс и интерфейс - это типы с абстрактным контрактом. Тем не менее между ними имеются существенные различия.<br><br> Какие из следующих утверждений верны для Java 8 ?
Ваши ответы
В отличие от классов, множественное наследование интерфейсов допускается.
Абстрактный класс может содержать protected и static члены, а интерфейс нет.
Что напечатает следующий код:
class SuperBase { 
   public int i = 3; 
   public void mm(Object o) { 
       System.out.println("Object  " + i); 
   } 
   public void mm(String o) { 
       System.out.println("String  " + i); 
   } 
} 
 
public class Base extends SuperBase { 
   public Base() { 
       i = 5; 
   } 
   public static void main(String[] args) { 
       SuperBase sb = new Base(); 
       Object o = ""; 
       sb.mm(o); 
       sb.mm(""); 
   } 
} 
Ваши ответы
Объяснение:

Конструктор Base (который вызывается ПОСЛЕ конструктора SuperBase) перезаписывает поля. Если вынести i = 5 из конструктора и поместить как поле в классе Base, то отобразится именно 3, а не 5.