1:
package com.sunil.scjp.puzzles;
public interface AQuestion
{
void someMethod() throws Exception;
}
class AQuestionImpl implements AQuestion
{
public final void someMethod()
{
System.out.println("someMethod");
}
}
public class ClassB
{
public static void main(String[] args)
{
System.out.println("Hello World!");
AQuestion = new AQuestionImpl();
}
}
Compilation:
javac -cp . ClassB.java
ClassB.java:10: com.sunil.scjp.puzzles.AQuestionImpl is not public in com.sunil.scjp.puzzles; cannot be accessed from outside package
AQuestion aQ = new AQuestionImpl();
^
1 error
Reason: the AQuestionImpl is of default access, It can be accessed only in the same package.
__________________________________________________________________________________
2:
package com.sunil.scjp.puzzles;
public interface AQuestion
{
void someMethod() throws Exception;
}
class AQuestionImpl implements AQuestion
{
public final void someMethod()
{
System.out.println("someMethod");
}
}
package com.sunil.scjp.puzzles;
public class ClassB
{
public static void main(String[] args)
{
System.out.println("Hello World!");
AQuestion aQ = new AQuestionImpl();
}
}
Compilation: Success
Output: Hello World!
Reason: Since the package is same, the ClassB can access AQuestionImpl
___________________________________________________________________________________
3:
package com.sunil.scjp.puzzles;
class Beverage
{
}
package com.sunil.scjp;
import com.sunil.scjp.puzzles.Beverage;
class Tea extends Beverage
{
public static void main(String[] args)
{
System.out.println("Hello World!");
}
}
Compilation:
D:\workings\Sunil\skillsets\Java\SCJP\eclipse\SCJP\src>javac -cp . com/sunil/scjp/puzzles/Beverage.java
D:\workings\Sunil\skillsets\Java\SCJP\eclipse\SCJP\src>javac -cp . com/sunil/scjp/Tea.java
com\sunil\scjp\Tea.java:3: com.sunil.scjp.puzzles.Beverage is not public in com.sunil.scjp.puzzles; cannot be accessed from outside package
import com.sunil.scjp.puzzles.Beverage;
^
com\sunil\scjp\Tea.java:5: cannot find symbol
symbol: class Beverage
class Tea extends Beverage
^
2 errors
Explanation:
Beverage file compiles fine.
Beverage class is in package com.sunil.scjp.puzzles and Tea is in package com.sunil.scjp. The import statement itself fails while compiling Tea.java
_________________________________________________________________________________
4:
package com.sunil.scjp.puzzles;
public class Beverage
{
}
package com.sunil.scjp;
class Tea extends Beverage
{
public static void main(String[] args)
{
System.out.println("Hello World!");
}
}
Compilation:
D:\workings\Sunil\skillsets\Java\SCJP\eclipse\SCJP\src>javac -cp . com/sunil/scjp/puzzles/Beverage.java
D:\workings\Sunil\skillsets\Java\SCJP\eclipse\SCJP\src>javac -cp . com/sunil/scjp/Tea.java
D:\workings\Sunil\skillsets\Java\SCJP\eclipse\SCJP\src>javac -cp . com/sunil/scjp/Tea.java
com\sunil\scjp\Tea.java:4: cannot find symbol
symbol: class Beverage
class Tea extends Beverage
^
1 error
Explanation: Even-though the Beverage class is public, compilation of Tea.java fails as it does not import the Beverage class.
------------------------------------------------------------------------------------------------------------
5:
package com.sunil.scjp.puzzles;
final abstract public class PerfectlyValidClass
{
public void someMethod()
{
System.out.println("");
}
}
Compilation:
D:\workings\Sunil\skillsets\Java\SCJP\eclipse\SCJP\src>javac -cp . com/sunil/scjp/puzzles/PerfectlyValidClass.java
com\sunil\scjp\puzzles\PerfectlyValidClass.java:3: illegal combination of modifiers: abstract and final
final abstract public class PerfectlyValidClass
^
1 error
Explanation: You cannot mix non access modifiers while declaring a class.
--------------------------------------------------------------------------------------------------------------
6:
abstract strictfp public class PerfectlyValidClass
{
public strictfp final String myStr = new String("Hello");
public void someMethod()
{
System.out.println("");
}
}
Compilation:
D:\workings\Sunil\skillsets\Java\SCJP\eclipse\SCJP\src>javac -cp . com/sunil/scjp/puzzles/PerfectlyValidClass.java
com\sunil\scjp\puzzles\PerfectlyValidClass.java:5: modifier strictfp not allowed here
public strictfp final String myStr = new String("Hello");
^
1 error
Explanation: strictfp is only class and method modifier.
----------------------------------------------------------------------------------------
7:
abstract strictfp public class PerfectlyValidClass
{
public final String myStr = new String("Hello");
public strictfp void someMethod()
{
System.out.println("");
}
}
Compilation: Success
-----------------------------------------------------------------------------------------------------------
class final ManThisIsFinal
{
public static void main(String[] args)
{
System.out.println("Hello World!");
}
}
Compilation:
com\sunil\scjp\puzzles\ManThisIsFinal.java:3: <identifier> expected
class final ManThisIsFinal
^
com\sunil\scjp\puzzles\ManThisIsFinal.java:3: <identifier> expected
class final ManThisIsFinal
^
2 errors
Explanation: accessor should be followed by an identifier while defining class or variable
--------------------------------------------------------------------------------------------------------