Java Programming - Declarations and Access Control - Discussion

Discussion Forum : Declarations and Access Control - General Questions (Q.No. 3)
3.
interface Base 
{
    boolean m1 ();
    byte m2(short s);
}
which two code fragments will compile?
  1. interface Base2 implements Base {}
  2. abstract class Class2 extends Base
    { public boolean m1(){ return true; }}
  3. abstract class Class2 implements Base {}
  4. abstract class Class2 implements Base
    { public boolean m1(){ return (7 > 4); }}
  5. abstract class Class2 implements Base
    { protected boolean m1(){ return (5 > 7) }}
1 and 2
2 and 3
3 and 4
1 and 5
Answer: Option
Explanation:

(3) is correct because an abstract class doesn't have to implement any or all of its interface's methods. (4) is correct because the method is correctly implemented ((7 > 4) is a boolean).

(1) is incorrect because interfaces don't implement anything. (2) is incorrect because classes don't extend interfaces. (5) is incorrect because interface methods are implicitly public, so the methods being implemented must be public.

Discussion:
5 comments Page 1 of 1.

Dina said:   4 years ago
Why is there no implementation for byte m2 (short s);?

Divyesh said:   8 years ago
Why is there no implementation for byte m2 (short s);?

Hugo said:   8 years ago
abstract class Class2 implements Base
{ protected boolean m1(){ return (5 > 7) }}

(5) Needs semicolon after the return statement, otherwise, it can make it too easy.
(1)

Siddhesh said:   1 decade ago
@Prashant.

Abstract class means 0 to 100% abstraction. That's why abstract class can also give method implementations. If not then it will be same as that of interface. Even if we declare class abstract which actually don't have any abstract method will work.

Prashant said:   1 decade ago
Doubt about option 4 as how can abstract class define any method?

Post your comments here:

Your comments will be displayed after verification.