chapter 11 java

Ace your homework & exams now with Quizwiz!

Which of the following statements are true?

"class A extends B" means A is a subclass of B. A subclass is usually extended to contain more functions and more detailed information than its superclass.

The UML uses ________ before a member name to indicate that the member is public.

+

Which statements are most accurate regarding the following classes? class A { private int i; protected int j; } class B extends A { private int k; protected int m; }

An object of B contains data fields i, j, k, m.

The getValue() method is overridden in two ways. Which one is correct? I: public class Test { public static void main(String[] args) { A a = new A(); System.out.println(a.getValue()); } } class B { public String getValue() { return "Any object"; } } class A extends B { public Object getValue() { return "A string"; } } II: public class Test { public static void main(String[] args) { A a = new A(); System.out.println(a.getValue()); } } class B { public Object getValue() { return "Any object"; } } class A extends B { public String getValue() { return "A string"; } }

II

Which of the following classes cannot be extended?

final class A { }

In OOP, you declare a class that extends another class. This is called ________.

inheritance

Analyze the following code: public class Test { public static void main(String[] args) { String s = new String("Welcome to Java"); Object o = s; String d = (String)o; } }

s, o, and d reference the same String object.

You use the keyword ________ to reference a method in the superclass from a subclass.

super

Inheritance means ________.

that a class can extend another class

Encapsulation means ________.

that data fields should be declared private

A final class can have instances.

true

A instance of a subclass is also an instance of its superclass.

true

What is the output of the following code? ArrayList<java.util.Date> list = new ArrayList<java.util.Date>( ); java.util.Date d = new java.util.Date(); list.add(d); list.add(d); System.out.println((list.get(0) == list.get(1)) + " " + (list.get(0)).equals(list.get(1)));

true true

Which of the following statements are true?

If a method overrides another method, these two methods must have the same signature. A method can be overloaded in the same class. A method in a subclass can overload a method in the superclass.

What modifier should you use on the members of a class so that they are not accessible to another class in a different package, but are accessible to any subclasses in any package?

protected

Suppose an ArrayList list contains {"red", "green", "red", "green"}. What is the list after the following code? list.remove("red");

{"green", "red", "green"}

Which of the following is incorrect?

A constructor may be static.

Which of the following statements is false?

A method with no visibility modifier can be accessed by a class in a different package.

________ can search in an unsorted list.

Linear search

What is the output of the following code? public class Test { public static void main(String[] args) { new Person().printPerson(); new Student().printPerson(); } } class Student extends Person { private String getInfo() { return "Student"; } } class Person { private String getInfo() { return "Person"; } public void printPerson() { System.out.println(getInfo()); } }

Person Person

Analyze the following code: public class Test { public static void main(String[] args) { Object a1 = new A(); Object a2 = new Object(); System.out.println(a1); System.out.println(a2); } } class A { int x; public String toString() { return "A's x is " + x; } }

When executing System.out.println(a2), the toString() method in the Object class is invoked. When executing System.out.println(a1), the toString() method in the A class is invoked.

The order in which modifiers appear before a class or a method is important.

false

In OOP, you declare a data fields to be private. This is called ________.

encapsulation

Given two reference variables t1 and t2, if t1.equals(t2) is true, t1 == t2 ________.

may be true or false

You can create an ArrayList using ________.

new ArrayList()

You can assign ________ to a variable of Object[ ] type.

new String[100] new java.util.Date[100]

What is the output of the following code? ArrayList<String> list = new ArrayList<String>( ); String s1 = new String("Java"); String s2 = new String("Java"); list.add(s1); list.add(s2); System.out.println((list.get(0) == list.get(1)) + " " + (list.get(0)).equals(list.get(1)));

false true

What is the output of the following code? public class Test { public static void main(String[] args) { String s1 = new String("Java"); String s2 = new String("Java"); System.out.print((s1 == s2) + " " + (s1.equals(s2))); } }

false true

If a method is declared protected in the superclass, you may declare the method private in the subclass.

false.

Object-oriented programming allows you to derive new classes from existing classes. This is called ________.

inheritance

Which of the following are Java keywords?

instanceof

The class Date, Calendar, and ArrayList are in the ________ package.

java.util

What is the output of running class C? class A { public A() { System.out.println( "The default constructor of A is invoked"); } } class B extends A { public B() { System.out.println( "The default constructor of B is invoked"); } } public class C { public static void main(String[] args) { B b = new B(); } }

"The default constructor of A is invoked" "The default constructor of B is invoked"

The UML uses ________ before a member name to indicate that the member is protected.

#

The UML uses ________ before a member name to indicate that the member is private.

-

Which of the following statements are true?

A method may be implemented in several subclasses. The Java Virtual Machine dynamically binds the implementation of the method at runtime. Dynamic binding can apply to instance methods. The compiler finds a matching method according to parameter type, number of parameters, and order of the parameters at compilation time. You can always pass an instance of a subclass to a parameter of its superclass type. This feature is known as polymorphism.

You can always successfully cast a superclass to a subclass.

false

Consider the following declaration for a class A. class A { private int x; private int y; public A(int x, int y) { this.x = x; this.y = y; } } Class B is a subclass of A. Which of the following can be constructors in B? I: public B() { } II: public B(int x, int y) { super(x, y); } III: public B() { super(0, 0); } IV: public B(int x, int y) { this.x = x; this.y = y; }

III II

Which statements are most accurate regarding the following classes? class A { private int i; protected int j; } class B extends A { private int k; protected int m; // some methods omitted }

In the class B, an instance method can only access j, k, m.

Which of the following statements are true?

It is a compilation error if two methods differ only in return type in the same class. To override a method, the method must be defined in the subclass using the same signature and compatible return type as in its superclass. A private method cannot be overridden. If a method defined in a subclass is private in its superclass, the two methods are completely unrelated. A static method cannot be overridden. If a static method defined in the superclass is redefined in a subclass, the method defined in the superclass is hidden. Overloading a method is to provide more than one method with the same name but with different signatures to distinguish them.

What is the output of the following code? public class Test { public static void main(String[] args) { new Person().printPerson(); new Student().printPerson(); } } class Student extends Person { public String getInfo() { return "Student"; } } class Person { public String getInfo() { return "Person"; } public void printPerson() { System.out.println(getInfo()); } }

Person Student

Analyze the following code. // Program 1: public class Test { public static void main(String[] args) { Object a1 = new A(); Object a2 = new A(); System.out.println(a1.equals(a2)); } } class A { int x; public boolean equals(A a) { return this.x == a.x; } } // Program 2: public class Test { public static void main(String[] args) { A a1 = new A(); A a2 = new A(); System.out.println(a1.equals(a2)); } } class A { int x; public boolean equals(A a) { return this.x == a.x; } }

Program 1 displays false and Program 2 displays true

Analyze the following code. // Program 1: public class Test { public static void main(String[] args) { Object circle1 = new Circle(); Circle circle2 = new Circle(); System.out.println(circle1.equals(circle2)); } } class Circle { double radius; public boolean equals(Circle circle) { return this.radius == circle.radius; } } // Program 2: public class Test { public static void main(String[] args) { Circle circle1 = new Circle(); Circle circle2 = new Circle(); System.out.println(circle1.equals(circle2)); } } class Circle { double radius; public boolean equals(Object circle) { return this.radius == ((Circle)circle).radius; } }

Program 1 displays false and Program 2 displays true

Analyze the following code. // Program 1: public class Test { public static void main(String[] args) { Object circle1 = new Circle(); Object circle2 = new Circle(); System.out.println(circle1.equals(circle2)); } } class Circle { double radius; public boolean equals(Circle circle) { return this.radius == circle.radius; } } // Program 2: public class Test { public static void main(String[] args) { Object circle1 = new Circle(); Object circle2 = new Circle(); System.out.println(circle1.equals(circle2)); } } class Circle { double radius; public boolean equals(Object circle) { return this.radius == ((Circle)circle).radius; } }

Program 1 displays false and Program 2 displays true

Analyze the following code. // Program 1: public class Test { public static void main(String[] args) { Object a1 = new A(); Object a2 = new A(); System.out.println(a1.equals(a2)); } } class A { int x; public boolean equals(Object a) { return this.x == ((A)a).x; } } // Program 2: public class Test { public static void main(String[] args) { Object a1 = new A(); Object a2 = new A(); System.out.println(a1.equals(a2)); } } class A { int x; public boolean equals(A a) { return this.x == a.x; } }

Program 1 displays true and Program 2 displays false

What is the output of the following code? public class Test { public static void main(String[] args) { Object o1 = new Object(); Object o2 = new Object(); System.out.print((o1 == o2) + " " + (o1.equals(o2))); } }

false false

Analyze the following code. // Program 1 public class Test { public static void main(String[] args) { Object a1 = new A(); Object a2 = new A(); System.out.println(((A)a1).equals((A)a2)); } } class A { int x; public boolean equals(A a) { return this.x == a.x; } } // Program 2 public class Test { public static void main(String[] args) { A a1 = new A(); A a2 = new A(); System.out.println(a1.equals(a2)); } } class A { int x; public boolean equals(A a) { return this.x == a.x; } }

Program 1 displays true and Program 2 displays true

Analyze the following code. // Program 1: public class Test { public static void main(String[] args) { Circle circle1 = new Circle(); Circle circle2 = new Circle(); System.out.println(circle1.equals(circle2)); } } class Circle { double radius; public boolean equals(Circle circle) { return this.radius == circle.radius; } } // Program 2: public class Test { public static void main(String[] args) { Circle circle1 = new Circle(); Circle circle2 = new Circle(); System.out.println(circle1.equals(circle2)); } } class Circle { double radius; public boolean equals(Object circle) { return this.radius == ((Circle)circle).radius; } }

Program 1 displays true and Program 2 displays true

Normally you depend on the JVM to perform garbage collection automatically. However, you can explicitly use ________ to request garbage collection.

System.gc()

Analyze the following code: Double[ ] array = {1, 2, 3}; ArrayList<Double> list = new ArrayList<>(Arrays.asList(array)); System.out.println(list);

The code has a compile error because an integer such as 1 is automatically converted into an Integer object, but the array element type is Double.

Analyze the following code: double[] array = {1, 2, 3}; ArrayList<Double> list = new ArrayList<>(Arrays.asList(array)); System.out.println(list);

The code has a compile error because asList(array) requires that the array elements are objects.

Analyze the following code: double[] c = {1, 2, 3}; System.out.println(java.util.Collections.max(c));

The code has a compile error on Collections.max(c). c cannot be an array.

Analyze the following code: Integer[] c = {3, 5}; java.util.Collections.shuffle(c); System.out.println(java.util.Arrays.toString(c));

The code has a compile error on Collections.shuffle(c). c cannot be an array.

Analyze the following code: Circle c = new Circle (5); Cylinder c = cy;

The code has a compile error.

Analyze the following code: Cylinder cy = new Cylinder(1, 1); Circle c = cy;

The code is fine.

Analyze the following code: public class Test { public static void main(String[] args) { new B(); } } class A { int i = 7; public A() { setI(20); System.out.println("i from A is " + i); } public void setI(int i) { this.i = 2 * i; } } class B extends A { public B() { // System.out.println("i from B is " + i); } public void setI(int i) { this.i = 3 * i; } }

The constructor of class A is called and it displays "i from A is 60".

Analyze the following code: public class Test { public static void main(String[] args) { new B(); } } class A { int i = 7; public A() { System.out.println("i from A is " + i); } public void setI(int i) { this.i = 2 * i; } } class B extends A { public B() { setI(20); // System.out.println("i from B is " + i); } public void setI(int i) { this.i = 3 * i; } }

The constructor of class A is called and it displays "i from A is 7".

ArrayList<String> list = new ArrayList<String>(); list.add("Beijing"); list.add("Tokyo"); list.add("Shanghai"); list.set(3, "Hong Kong");

The last line in the code causes a runtime error because there is no element at index 3 in the array list. If you replace the last line by list.add(3, "Hong Kong"), the code will compile and run fine.

Analyze the following code: public class Test { public static void main(String[] args) { B b = new B(); b.m(5); System.out.println("i is " + b.i); } } class A { int i; public void m(int i) { this.i = i; } } class B extends A { public void m(String s) { } }

The method m is not overridden in b. B inherits the method m from A and defines an overloaded method m in b.

Suppose you create a class Square to be a subclass of GeometricObject. Analyze the following code: class Square extends GeometricObject { double length; Square(double length) { GeometricObject(length); } }

The program has a compile error because you attempted to invoke the GeometricObject class's constructor illegally.

Analyze the following code: public class Test extends A { public static void main(String[] args) { Test t = new Test(); t.print(); } } class A { String s; A(String s) { this.s = s; } public void print() { System.out.println(s); } }

The program has an implicit default constructor Test(), but it cannot be compiled, because its super class does not have a default constructor. The program would compile if the constructor in the class A were removed. The program would compile if a default constructor A(){ } is added to class A explicitly.

Analyze the following code: public class A extends B { } class B { public B(String s) { } }

The program would compile fine if you add the following constructor into A: A(String s) { super(s); } The program has a compilation error because the default constructor of A invokes the default constructor of B, but B does not have a default constructor.

A class design requires that a particular member variable must be accessible by any subclasses of this class, but otherwise not by classes which are not members of the same package. What should be done to achieve this?

The variable should be marked protected.

What modifier should you use on a class so that a class in the same package can access it but a class in a different package cannot access it?

Use the default modifier.

Which of the statements regarding the super keyword is incorrect?

You can use super.super.p to invoke a method in superclass's parent class.

Which of the following statements are true?

You should follow standard Java programming style and naming conventions. Choose informative names for classes, data fields, and methods. Override the methods equals and toString defined in the Object class whenever possible. A public default no-arg constructor is assumed if no constructors are defined explicitly. Override the hashCode method whenever the equals method is overridden. By contract, two equal objects must have the same hash code.

Given the following classes and their objects: class C1 {}; class C2 extends C1 {}; class C3 extends C1 {}; C2 c2 = new C2(); C3 c3 = new C3(); Analyze the following statement: c2 = (C2)((C1)c3);

You will get a runtime error because you cannot cast objects from sibling classes.

Show the output of the following code: String[] array = {"red", "green", "blue"}; ArrayList<String> list = new ArrayList<>(Arrays.asList(array)); list.add(0, "red"); System.out.println(list)

["red", "red", "green", "blue"]

The printout from the following code is ________. java.util.ArrayList<String> list = new java.util.ArrayList<String>( ); list.add("New York"); java.util.ArrayList<String> list1 = list; list.add("Atlanta"); list1.add("Dallas"); System.out.println(list1);

[New York, Atlanta, Dallas]

The size of ________ can grow and shrink at runtime.

an ArrayList

Given the following code: class C1 {} class C2 extends C1 { } class C3 extends C2 { } class C4 extends C1 {} C1 c1 = new C1(); C2 c2 = new C2(); C3 c3 = new C3(); C4 c4 = new C4(); Which of the following expressions evaluates to false?

c4 instanceof C2

A final class can be extended.

false

If a method is declared public in the superclass, you may declare the method private in the subclass.

false

Superclasses contain more features than their subclasses.

false

Given the following code, find the compile error. public class Test { public static void main(String[] args) { m(new GraduateStudent()); m(new Student()); m(new Person()); m(new Object()); } public static void m(Student x) { System.out.println(x.toString()); } } class GraduateStudent extends Student { } class Student extends Person { public String toString() { return "Student"; } } class Person extends Object { public String toString() { return "Person"; } }

m(new Person()) causes an error m(new Object()) causes an error

The UML uses ________ before a member name to indicate that the member is package-private.

none (blank)

In OOP, a reference variable can reference a subtype object. This is called ________.

polymorphism

The visibility of these modifiers increases in this order ________.

private, none (if no modifier is used), protected, and public

Which of the following methods override the toString method in the Object class?

public String toString()

Which of the following methods override the equals method in the Object class?

public boolean equals(Object o)

The equals method is defined in the Object class. Which of the following is correct to override it in the String class?

public boolean equals(Object other)

Composition means ________.

that a class contains a data field that references another object

Polymorphism means ________.

that a variable of supertype can refer to a subtype object

An interface can be a separate unit and can be compiled into a bytecode file.

true

Every class has a toString() method and an equals() method.

true

Every object is an instance of the Object class.

true

Given two reference variables t1 and t2, if t1 == t2 is true, t1.equals(t2) must be ________.

true

If a data field is declared in the superclass, you may hide it by redeclaring it in the subclass.

true

If a method is declared private in the superclass, you may declare the method protected in the subclass.

true

If a method is declared private in the superclass, you may declare the method public in the subclass.

true

If a method is declared protected in the superclass, you may declare the method public in the subclass.

true

If a parameter is of the java.lang.Object type, you can pass any object to it. This is known as generic programming.

true

If an object is an instance of class A, and class A is a subclass of class B, then the object is also an instance of class B.

true

The instanceof operator is used to determine whether an object is an instance of a certain class.

true

The set of all instances of a subclass is a subset of the instances of its superclass.

true

You can always successfully cast a subclass to a superclass.

true

You can use the operator == to check whether two variables refer to the same object, and use the equals() method to check the equality of contents of the two objects.

true

Suppose ArrayList x contains two strings [Beijing, Singapore]. Which of the following methods will cause the list to become [Beijing, Chicago, Singapore]?

x.add(1, "Chicago")

Invoking ________ removes all elements in an ArrayList x.

x.clear()

Invoking ________ returns the first element in an ArrayList x.

x.get(0)

Suppose ArrayList x contains two strings [Beijing, Singapore]. Which of the following method will cause runtime errors?

x.get(2) x.set(2, "New York"); x.remove(2)

Suppose ArrayList x contains two strings [Beijing, Singapore]. Which of the following method will cause the list to become [Beijing]?

x.remove("Singapore") x.remove(1)

Invoking ________ returns the number of the elements in an ArrayList x.

x.size()

Suppose an ArrayList list contains {"red", "red", "green"}. What is the list after the following code? String element = "red"; for (int i = 0; i < list.size(); i++) if (list.get(i).equals(element)) { list.remove(element); i--; }

{"green"}

Suppose an ArrayList list contains {"red", "red", "green"}. What is the list after the following code? String element = "red"; for (int i = list.size() - 1; i >= 0; i--) if (list.get(i).equals(element)) list.remove(element);

{"green"}

Suppose an ArrayList list contains {"red", "red", "green"}. What is the list after the following code? String element = "red"; for (int i = 0; i < list.size(); i++) if (list.get(i).equals(element)) list.remove(element);

{"red", "green"}


Related study sets

Final Exam Homework Questions (19, 20, 21, and 17)

View Set

Chapter 8 - Control of Microorganisms in the Environment

View Set

GRAMMAIRE : Les expansions du nom

View Set

Chapter 12: Reports on Audited Financial Statements

View Set