1. 静态方法里不能定义静态变量。因为静态变量是需要在类加载的时候加载到内存中的,但是如果把静态变量定义在静态方法内部,这样,加载类的时候,就不会加载该静态方法,所以会产生矛盾。
2. 静态方法不能调用非静态的方法和变量。需要创建对象来调用。因为,静态方法不需要创建对象就可以直接调用,这时候如果调用了非静态的方法或者变量,不能保证该非静态的方法或者变量是否已经创建了对象。
3. 非静态方法是可以调用非静态的方法和变量的,也可以调用静态的方法和变量。因为非静态的方法必然是有对应的一个对象的,说明这个对象已经建立了,那么类中的方法也必然有确定的对象,所以相当于已经创建了对象,可以直接调用。
4. 对于覆盖有3种不能构成覆盖 1 方法是静态方法 2 被private修饰 3 被final修饰
(1)private方法不能被继承,也就不存在重写。可以写与父类一个一模一样的方法,但是这两个方法没有联系。private方法只能在类的内部里使用。
(2)static方法能被继承且可以重写:若重写: 父类 a=new 子类() a编译时引用类决定调用的方法,运行时调用的方法是引用类的方法,即有多态的存在。
(3)final 方法不能被继承和重写。