Page 1 of 1

About Question com.enthuware.ets.scjp.v6.2.791 and enthuware.ocajp.i.v7.2.1167 :

Posted: Sun Nov 02, 2014 7:39 pm
by ssack2014
Why is B's m() not an override of A's m()? or am I looking at this question wrong?

Re: About Question com.enthuware.ets.scjp.v6.2.791 :

Posted: Sun Nov 02, 2014 7:42 pm
by ssack2014
the modifier is less restrictive.


//in file A.java
public class A
{
protected void m() throws SomeException{}
}

//in file B.java
public class B extends A
{
public void m(){ }
}

Re: About Question com.enthuware.ets.scjp.v6.2.791 :

Posted: Sun Nov 02, 2014 9:59 pm
by admin
It is a valid override. The explanation doesn't say that it is not a valid override either. So I am not sure what is the problem?

-Paul.

Re: About Question com.enthuware.ets.scjp.v6.2.791 :

Posted: Sat Feb 18, 2023 3:18 pm
by edufin166@yahoo.com
Ok.

As I could see. We have 2 correct answers:

A a = new B();
a.m();


A a = new B();
( ( B) a ).m();

Am I right?

Re: About Question com.enthuware.ets.scjp.v6.2.791 and enthuware.ocajp.i.v7.2.1167 :

Posted: Sat Feb 18, 2023 11:35 pm
by admin
A a = new B();
a.m();
Did you read the explanation provided for this option? It explains exactly why this option is not correct.
A's m() declares 'throws SomeException', which is a checked exception, while the main() method doesn't. So a.m() must be wrapped in a try/catch block.

Re: About Question com.enthuware.ets.scjp.v6.2.791 and enthuware.ocajp.i.v7.2.1167 :

Posted: Mon Jan 06, 2025 3:31 pm
by AlexanderTheGrape
Wouldn't this solution not compile?
class B would need to import A via a package since they are in separate files, and TestClass.java would need to import the package(s) containing class A and B to use them.
None of these files import any packages explicitly.
If I'm misunderstanding the question, or if missing such imports accross files is expected to be omitted, please let me know. It does mention "Given that SomeException is a checked exception ...", perhaps does that mean we assume it will compile?

//in file A.java public class A{ protected void m() throws SomeException{} }
//in file B.java public class B extends A{ public void m(){ } }
//in file TestClass.java public class TestClass{ public static void main(String[] args){
//insert code here. //1
} }

Re: About Question com.enthuware.ets.scjp.v6.2.791 and enthuware.ocajp.i.v7.2.1167 :

Posted: Mon Jan 06, 2025 10:07 pm
by admin
>class B would need to import A via a package since they are in separate files, and TestClass.java would need to import the package(s) containing class A and B to use them.

No, why do you think so? None of the given files have any package statement. That means all of the classes defined in those files are in the same "unnamed" package and so, there is no need for any of them to import each other.

An import is not based on files but is based on packages. A file needs to have an import statement only if a class in that file wants to access a class defined in another package.

Re: About Question com.enthuware.ets.scjp.v6.2.791 and enthuware.ocajp.i.v7.2.1167 :

Posted: Fri Jan 10, 2025 3:54 pm
by AlexanderTheGrape
Ok great, that makes much more sense, thank you!