C# Programming - Interfaces - Discussion

Discussion Forum : Interfaces - General Questions (Q.No. 1)
1.
Which of the following statements is correct about the C#.NET code snippet given below?
interface IMyInterface
{ 
    void fun1(); 
    int fun2();
}
class MyClass: IMyInterface
{ 
    void fun1()
    { } 
    int IMyInterface.fun2()
    { } 
}
A function cannot be declared inside an interface.
A subroutine cannot be declared inside an interface.
A Method Table will not be created for class MyClass.
MyClass is an abstract class.
The definition of fun1() in class MyClass should be void IMyInterface.fun1().
Answer: Option
Explanation:
No answer description is available. Let's discuss.
Discussion:
15 comments Page 1 of 2.

Pallavi said:   2 years ago
Interface can be implemented explicitly using <InterfaceName>. <MemberName>.

Jasir said:   2 years ago
@All. As per my knowledge;

1) You can't use Access Modifiers while explicit implementation of interfaces in the Derived Class.

2) All methods in interface derived class should have either implicit or explicit implementation of interfaces, you can't have a mixture of them.

Omkar said:   8 years ago
void fun1() must be public.

Karthik D V said:   9 years ago
Explicit implementation of interface may not be needed in this case.

Public void fun1 () { } // This will solve the problem.

So, answer E isn't mandatory!

Rahul Raj said:   10 years ago
Correct Answer "E".

Because Fun1() in MyClass is Void Fun1() and should be Fun2 also Void IMyInterface.fun2().

And no need to write public because public is by default.

Output:

interface IMyInterface
{
void fun1();
void fun2();
}
class MyClass : IMyInterface
{
void IMyInterface.fun1()
{ }
void IMyInterface.fun2()
{ }

Anas said:   1 decade ago
1. The Interface Methods when called in Derived class should be Public.

2. It is not necessary to write Interface.Method() in derived class direct method name with public keyword would suffice.

Manoj said:   1 decade ago
Missing access specifier in implementation of fun1()

It should be:

interface IMyInterface
{
void fun1();
int fun2();
}
class MyClass: IMyInterface
{
public void fun1()
{ }
int IMyInterface.fun2()
{ }
}

or

interface IMyInterface
{
void fun1();
int fun2();
}
class MyClass: IMyInterface
{
void IMyInterface.fun1()
{ }
int IMyInterface.fun2()
{ }
}

Ganesh baba said:   1 decade ago
Yes its a right answer, we need to prefix interface name to a method name only when the same method is declared in another interface. In order to trace out in which interface the method is going to implement. You will understand better in multiple inheritance concept. It sounds complex in vocabulary but read it twice you'll get.

Vinit said:   1 decade ago
Answer is correct. Because in interface all the signature are public by default and we can directly use them in derived class. But before declaring them in derived class we must tell that called method is of which interface like it is done in 2nd fun2() method.

Sudhakar said:   1 decade ago
void IMyInterface.fun1()
int IMyInterface.fun2()

(or)

public void fun1()
public int fun2()


As per multiple choice answer should be 'E'.


Post your comments here:

Your comments will be displayed after verification.