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

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

-17

  • Кто проходил: MartinK
  • Дата прохождения: 15.05.2019
Каким будет результат работы программы?
class Print1 { 
   private void print() { 
       System.out.println(777); 
   } 
   void print(Print1 p) { 
       p.print(); 
   } 
} 
 
public class Print2 extends Print1 { 
   void print() { 
       System.out.println(666); 
   } 
   public static void main(String[] args) { 
       Print1 p = new Print1(); 
       Print2 q = new Print2(); 
       p.print(q); 
   } 
} 
Ваши ответы
777
Объяснение:

метод *print* класса Print1 _не переопределяется_ методом *print* класса Print2, так как последний даже не знает о существовании такого в классе-родителе (ибо там он private). Эти методы *print* - это 2 разных метода, доступные _только_ каждый в своем классе. Поэтому, в методе *void print(Print1 p)* при вызове метода *print* компилятор находит приватный метод и, зная, что его дальнейшее переопределение невозможно в принципе, вызывает его.

Что выведет пример:
public class Test { 
 
   static class A extends B { 
       static Integer q = 2; 
       static { 
           System.out.print("A"); 
           A.q = 4; 
       } 
   } 
 
   static class B { 
       static { 
           System.out.print("B"); 
           A.q++; 
       } 
   } 
 
   public static void main(String[] args) { 
       System.out.println(A.q); 
   } 
} 
Что произойдет в результате компиляции и выполнения кода:
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: } 
Что произойдет в результате компиляции и выполнения следующего кода:
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; 
   } 
}
Даны интерфейсы:
interface A { 
   Integer a(); 
} 
interface B { 
   Number a(); 
} 
 
Какие фрагменты кода из перечисленных успешно скомпилируются?
Какие фрагменты кода будут компилироваться?
interface Base { 
   boolean m1(); 
   byte m2(short s); 
} 
Что будет в результате компиляции и выполнения данного кода?
class Base { 
   private void fPrivate() { 
       System.out.println("f Private"); 
   } 
 
   public static void fun(Base t) { 
       t.fPrivate(); 
   } 
} 
 
public class Derived extends Base { 
   public static void main(String args[]) { 
       Base a = new Derived();            //1 
       a.fPrivate();                      //2 
       Base.fun(a);                       //3 
   } 
}
Что напечатает следующий код:
public class Fruit { 
  public Fruit() { 
      System.out.println("Constructor of Fruit"); 
  } 
  void method() { 
      System.out.println("Method of Fruit"); 
  } 
  public static void main(String[] args) { 
      Fruit f = new Apple(); 
      f.method(); 
  } 
} 
class Apple extends Fruit { 
  public Apple() { 
      System.out.println("Constructor of Apple"); 
  } 
  protected void method() {  
      System.out.println("Method of Apple"); 
  } 
} 
Скомпилируется ли следующий код ?
class A{  
     public Single method(){ 
         return new Single();  
         } 
     } 
 
 class Single extends A{ 
     public A method() { 
         return new Single(); 
         }  
     } 
Каков результат выполнения следующего кода:
class Copier<T extends Cloneable> { 
   public T copy(T param) throws CloneNotSupportedException { 
       return  (T) param.clone();                            //1 
   } 
} 
 
class A  implements Cloneable{ 
   public int i=10; 
   @Override 
   public A clone() throws CloneNotSupportedException { 
       return (A) super.clone();                             //2 
   } 
} 
 
class B extends A{ 
   public int i=20; 
} 
 
public class MyClass { 
   public static void main(String[] args) throws CloneNotSupportedException { 
       B b = new B(); 
       Copier<B> copier = new Copier<>();                //3 
       A a = copier.copy(b);                                //4 
       System.out.println(a.i); 
   } 
}