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

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

+24

  • Кто проходил: ilya201177
  • Дата прохождения: 04.12.2018
Какие классы скомпилируются ?
abstract interface IClazz{ 
   int doSmth(String s); 
} 
 
abstract class X implements IClazz{ 
 
} 
 
private abstract class Y implements IClazz{ 
 
} 
 
class Z implements IClazz{ 
   int doSmth(String s){ 
       return 0; 
   } 
} 
Ваши ответы
X
Объяснение:

Класс Y не компилируется, поскольку private не допускается.
Класс Z не компилируется, потому что метод doSmth() в интерфейсе имеет модификатор public, а в классе Z - модификатор по-умолчанию, что является сужение области видимости и не допускается.
Класс X компилируется. Методы, объявленные в суперинтерфейсе и не реализованные в классе, считаются абстрактными методами этого класса.

Что произойдёт в результате выполнения даного кода:
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 вызывать второй запрещается

Какое утверждение верно по отношению к данному коду?
class A<T1, T2>{        //1 
    public <T1> fun(){} //2 
    public <T2> fun(){} //3 
}
Ваши ответы
Код не компилируется из-за строки 2 и 3
Какое утверждение верно по отношению к данному коду:
public class Person { 
   private String name; 
   public Person(String name) { 
       this.name = name; 
   } 
   public boolean equals(Person p) { 
       return p.name.equals(this.name); 
   } 
}  
Ваши ответы
Метод equals неправильно переопределяет метод equals класса Object.
Что будет выведено на консоль?
public class Test {  
   public static void main(String args[]) { 
         List a = new ArrayList<Integer>(); 
         List b = new ArrayList<String>(); 
         Class c1 = a.getClass(); 
         Class c2 = b.getClass(); 
         System.out.println(a.equals(b)); 
       } 
} 
Ваши ответы
true
Объяснение:

Метод equals() для списков реализован следующим образом: списки считаются равными, если они содержат одинаковое количество элементов и соответствующие элементы списков попарно равны: a.get(0) и b.get(0), a.get(1) и b.get(1) и т.д.
Поэтому любые два пустых списка, как в данном случае, будут равны.

Какой, четвертый принцип ООП, часто добавляют к всем извесной троице?
Ваши ответы
Абстракция
Что при вставке в строку 7 позволит выполнить код без ошибок:
01. class A { } 
02. class B extends A { } 
03. class C extends B { 
04.   public static void main(String[] args) { 
05.      A obj1 = new A(); 
06.      C obj2 = new C(); 
07.      // програмный код 
08.      C obj3 = (C)obj1; 
09.   } 
10. } 
Ваши ответы
obj1 = new C();
Что <u>позволяет</u> реализовать множественное наследование в Java?
Ваши ответы
в Java нет способов реализовать множественное наследование
Что будет напечатано на экран в результате компиляции и выполнения кода?
public class Test { 
   public static void main(String[] args){ 
       A a = new B(); 
       a.test(5); 
   } 
} 
class A { 
   public void test(Object obj){ 
       System.out.println("Object"); 
   } 
} 
class B extends A { 
   public void test(Integer obj){ 
       System.out.println("Integer"); 
   } 
} 
Ваши ответы
Объяснение:

Вызов метода test не является полиморфным, потому что метод public void test(Object obj) не переопределён, а всего лишь перегружен в потомке.

Есть код:
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; 
   } 
 
}
С помощью какого кода можно посчитать периметр круга?(выберите один или более вариантов)
Ваши ответы
Perimeter p=s; p.perimeter();
Perimeter p=(Perimeter)s; p.perimeter();