通过getClass()方法来获取类的定义信息,通过定义信息再调用getFields()方法来获取类的所有公共属性,或者调用getDeclaredFields()方法来获取类的所有属性,包括公共,保护,私有,默认的方法。
但是这里有一点要注意的是这个方法只能获取当前类里面显示定义的属性,不能获取到父类或者父类的父类及更高层次的属性的
即使编译期对象确实能访问到父类方法,但是反射时在本类找不到任何父类方法,关于java继承机制这点暂时很疑惑

子类继承父类所有属性和方法,但没有private的访问权限,可以扩展同名的方法,不算覆盖
public和protected都可以作用于子类,但在多态情况下,静态函数调用时编译和运行看左边,
所以子父类存在同名静态函数父类引用访问的是父类方法,子类并不能覆盖父类的方法

重载调用在编译期已经决定,以左边引用类型确定调用哪个方法,若当前引用类型重载不存在,自动转到
父类引用参数重载方法。
在多态情况下,父引用不能自动转到子引用,会编译报错,自动装拆箱可以正常运行
static方法不能被子类覆写,在子类中定义了和父类完全相同的static方法,则父类的static方法被隐藏
Son.staticmethod()或new Son().staticmethod()都是调用的子类的static方法,如果是
Father.staticmethod()或者Father f = new Son(); f.staticmethod()调用的都是父类的static方法。 

private:
对于private属性,子父类不能互相发现,可以重新定义,只能调用到自身的属性
static静态继承:
Son s=new Son();
s.show();
即使是父类引用,调用的也是子类的静态方法,但是父类方法里调用的仍是父类静态方法,静态方法不太遵循重载机制。

对"关键字synchronized不能被继承"

1、子类继承父类时,如果没有重写父类中的同步方法,子类同一对象,在不同线程并发调用该方法时,具有同步效果。

2、子类继承父类,并且重写父类中的同步方法,但没有添加关键字synchronized,子类同一对象,在不同线程并发调用该方法时,不再具有同步效果,这种情形即是"关键字synchronized不能被继承"的转述。

方法的重写(override)

两同两小一大原则:
方法名相同,参数类型相同
子类返回类型小于等于父类方法返回类型,
子类抛出异常小于等于父类方法抛出异常,
子类访问权限大于等于父类方法访问权限。