interface Z {void m1();} // 1 class D implements Z {public final void m1() {}} // 2 class E implements Z {public synchronized void m1() {}} // 3 class G implements Z {public native void m1();} // 4
In the above code shouldn't line 4 give a compile time error. The class G is not declared abstract but the m1() method under it is not implemented fully(missing {}). When I compiled it worked...not sure why ??
Ravi, I modified your code to add braces and compiled it:
interface Z {void m1();} // 1 class D implements Z {public final void m1() {}} // 2 class E implements Z {public synchronized void m1() {}} // 3 class G implements Z {public native void m1(){}} // 4
And the output is javac nativ.java nativ.java:4: native methods cannot have a body class G implements Z {public native void m1(){};} // 4