/** * java abstract class test based on jdk 11 * @author Haiyang Yu */ publicabstractclassAbstractC // abstractclassmodifiercannotbefinal // modifier "abstract" cannot be omitted { // all modifiers are allowed on a field publicint a = 1; privateint b = 1; protectedint c = 1; int d = 1; privatevolatileint e = 1; privatetransientint f = 1; privatestaticint g = 1; privatefinalint h = 1;
//allow all constructors publicAbstractC(int a){;} protectedAbstractC(int a, int b){;} AbstractC(int a, int b, int c){;} privateAbstractC(int a, int b, int c, int d){;}
// all regular methods are allowed publicvoidf1(){;} privatevoidf2(){;} protectedvoidf3(){;} voidf4(){;} privatestaticvoidf5(){;} privatenativevoidf6(); privatesynchronizedvoidf7(){;} privatestaticsynchronizedvoidf8(){;}
/** * java Interface Test based on jdk 11 * @author Haiyang Yu */ publicabstractinterfaceIn // interfacemodifiercannotbefinal { // interface modifier is always abstract
publicstaticfinalint a = 1; // interface field is always public static final
//private int b = 1; //interface field cannot be private neither protected
//public In(){;} //cannot have public constructors //private In(){;} //cannot have private constructors //protected In(){;} //cannot have protected constructors //In(){;} //cannot have default constructors
publicabstractvoidabstractF1(); // regular abstract method is always public and abstract by default //private void abstractF2(); // private abstract method is not allowed //protected void abstractF3();// protected abstract method is not allowed voidabstractF4(); // equivalent to public void abstractF4();
defaultvoidf2(){;} defaultpublicvoidf3(){;} // default method is always public privatevoidf4(){;} // private method is allowed since jdk1.9
publicstaticvoidstaticF1(){;} //static method is allowed since jdk1.8 // static method is public by default privatestaticvoidstaticF2(){;} // private static method is allowed since jdk1.9 //protected static void staticF3() {;} // private static method is not allowed }