题目:以下声明合法的是()
A、default String s;
B 、public final static native int w();
C、abstract double d;
D、abstract final double hyperbolicCosinc();
结果:B
解释:
A:属性的可访问控制符可以是public、protected、private、默认(如果不写的话,被认为是friendly,但是写上friendly会报错),没有default修饰符,所以A错误
B:定义的是本地方法,从修饰符native可以看出来,被native修饰的方法,底层是C++,表明这个方法采用的是JNI技术(Java Native Interface)完成想要的功能,JNI技术上层规范是JNA(Java Native Access),JNI技术其实也是实现了Java语言与其他语言的通信,比如这次就是C++,很多的方法采用的都是native修饰符,比如Object中hashCode()、clone()、notify()、wait()、以及System中的arraycopy(),所以B正确
C:属性的非可访问控制符可以是static和final,没有abstract,所以C错误
D:方法的非可访问控制符可以是abstract、static、final,但是abstract不可以和static以及final连用,毕竟abstract是虚拟的动态的,但是static和final都是静态的,不过static和final可以连用,毕竟两个都是静态的