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

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

+15

  • Кто проходил: KOS4FAN
  • Дата прохождения: 13.03.2019
Дан код:
class Building { 
  Building() { System.out.print("b "); } 
  Building(String name) { 
    this();   System.out.print("bn " + name); 
  } 
} 
public class House extends Building { 
  House() { System.out.print("h "); } 
  House(String name) { 
    this();   System.out.print("hn " + name); 
  } 
  public static void main(String[] args) { new House("x "); } 
} 
 
Какой будет результат?
Ваши ответы
b h hn x
Объяснение:

1) Call new House("x ");
2) invoke House(String name) {}; - constructor with argument String ;
3)call this();
4)invoke House(){}; - default constructor
5) call super();
6)always invoke default constructor Building(){}; - execute code and print "b";
7)return to House default constructor - execute code and print "h";
8)return to House constructor with argument String - execute code and print "hn x ", where "x " - paremeter new House("x ");
9)and result "b h hn x ";
Выглядит как цепочка! Очень хороший пример

Какой результат выполнения данной части кода?
public class TestMe { 
   public static Integer variable = 1; 
 
   public static void main(String[] args) { 
       System.out.println(new TestMeOneMoreTime().variable); 
   } 
 
} 
 
class TestMeOneMoreTime extends TestMe { 
   public static Integer variable = 2; 
}
Ваши ответы
2
Общее поведение супер класса может быть передано подкласу с помощью ключевого слова:
Ваши ответы
extends
Выберите все утверждения, которые верны по отношению к данному коду:
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: } 
Ваши ответы
Ошибка компиляции в строке 12
Объяснение:

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

Каким будет результат компиляции и выполнения данного кода:
class Base { 
   private int i = 5; 
 
   public Base() { 
       System.out.println("i = " + getI()); 
   } 
 
   public int getI() { 
       return i; 
   } 
} 
 
public class Test extends Base { 
   private static int i = 10; 
 
   public Test() { 
       System.out.println("i = " + super.getI()); 
   } 
 
   public int getI() { 
       return i; 
   } 
 
   public static void main(String[] args) { 
       Test test = new Test(); 
   } 
} 
Ваши ответы
i = 5
i = 5
Объяснение:

При создании экземпляра класса Test неявно вызывается конструктор суперкласса Base(). В нём происходит вызов метода getI(). Этот метод перекрыт в Test и возвращает i=10. Потом выполняется непосредственно конструктор Test(), в котором происходит вызов метода getI() из суперкласса (Base), который и возвращает i=5.

Что напечатает следующий код:
class A { } 
class B extends A { } 
class C extends B { } 
 
public class Test { 
   public static void m(A a) { 
       System.out.println("a"); 
   } 
   public static void m(B b) { 
       System.out.println("b"); 
   } 
 
   public static void main(String[] args) { 
       m(new C()); 
   } 
} 
Ваши ответы
Возникнет ошибка компиляции
Каким будет вывод после выполнения данной программы?
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()); 
   } 
} Каким будет вывод после выполнения данной программы?
Скомпилируется ли следующий код ?
class A{  
     public Single method(){ 
         return new Single();  
         } 
     } 
 
 class Single extends A{ 
     public A method() { 
         return new Single(); 
         }  
     } 
Есть код:
interface Square{ 
   double square(); 
} 
interface Perimeter{ 
   double perimeter(); 
} 
public class Overload { 
 
   public static void main(String[] args) { 
       Square s=new Circle(5); 
   } 
} 
 
class Circle implements Square, Perimeter{ 
   double r; 
   Circle(double r){ 
       this.r=r; 
   } 
   public double perimeter() {     
       return 2*Math.PI*r; 
   } 
 
   public double square() { 
       return Math.PI*r*r; 
   } 
 
}
С помощью какого кода можно посчитать периметр круга?(выберите один или более вариантов)
Каким будет результат компиляции и выполнения следующего кода?
class Main{ 
 
   public static void main(String...args){ 
       C c = new C(); 
 
   } 
 
} 
class A{ 
   static{ 
       System.out.println("static A1"); 
   } 
    A(){ 
       System.out.println("A"); 
    } 
} 
class B extends A{ 
   static{ 
       System.out.println("static B1"); 
   } 
    B(){ 
        System.out.println("B"); 
    } 
} 
class C extends B{ 
   static{ 
       System.out.println("static C1"); 
   } 
   { 
       System.out.println("non static C1"); 
   } 
    C(){ 
        this("Hello"); 
        System.out.println("C1"); 
    } 
    C(String str){ 
        System.out.println("C2"); 
    } 
    { 
        System.out.println("non static C2"); 
   } 
}