重写都是方法的重写,与属性无关
重写需要有继承关系,子类重写父类中的方法
- 方法名必须相同
- 参数列表必须相同
- 修饰符范围可扩大但不能缩小
- 抛出的异常范围可缩小但不能扩大
快捷键alt+insert 选择override
多态注意事项
- 多态是方法的多态,属性没有多态
- 多态的存在条件:有继承关系,方法重写了,且用父类引用指向了子类对象
>>B.java
public class B{
public static void testStatic(){
print("B test static");
}
public void test(){
print("B test");
}
}
>>A.java
public class A extends B{
public static void testStatic(){
print("A test static");
}
public void test(){//这个就是在a类中对b类的方法进行重写
print("A test");
}
}
>>Application.java
public class Application{
public static void main(String[] args){
A a = new A();
B b = new A();//这个就是多态(父类引用指向子类对象),这里使用多态可以更好地展现重写的含义,也展现出多态的含义,即b可以调用子类重写后的方法
a.testStatic();//A test Static
b.testStatic();//B test Static
a.test();//A test
b.test();//A test
//static方法随类加载,非static方法随实例加载,所以b调用static方法会调用B类中的方法,调用非static方法会调用A类中的方法