在论坛上,看到一个问题,当然,各位聪明的客官想必已经知道问题是什么了,嘿嘿,没错就是文章的标题:final修饰的类,其属性和方法默认是被final修饰的吗?
老实说,刚开始看到这个问题的时候,有点懵...(现场捕获懵比一只:),嘻嘻),之前学习的语法什么的,隔了太久忘记了。。。既然忘记了,就写个程序进行测试下吧
嘻嘻,以下是测试的程序:(小程序中用到了反射机制,还没学习到的客官,可以先去了解下哈:) )
/** * DateAndTime: 2016-12-13下午10:38:08 */ package question; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.lang.reflect.Modifier; /** * 测试final修饰的类,其属性和方法是不是final的? * ------使用String类进行测试------ * ---------利用反射机制获取属性和方法的修饰符,得到结果 * @author Administrator * */ public class Question1 { public static void reflection(Class clazz) { System.out.println("------属性------"); Field[] fields = clazz.getDeclaredFields(); for(Field f : fields) { int iModifiers = f.getModifiers(); String sModifiers = Modifier.toString(iModifiers); //打印所有属性的修饰符及属性名 System.out.println(sModifiers+" "+f.getName()); } System.out.println("------方法------"); Method[] methods = clazz.getMethods(); for(Method m: methods) { int iModifiers = m.getModifiers(); String sModifiers = Modifier.toString(iModifiers); //打印所有方法修饰符及方法名 System.out.println(sModifiers+" "+m.getName()); } } public static void main(String[] args) { reflection(Person.class); } } final class Person { private String name; private String age; private final String idCard; Person(String idCard) { this.idCard = idCard; } public static void m(){}; public void m1(String s){}; public final void m2(){}; }