重写都是方法的重写,与属性无关java
父类的引用能够指向子类,就是new一个子类的对象数据类型能够写为父类,new子类是能够指向父类的ide
重写的快捷键:Alt+insert函数
对静态方法调用的时候,调用的方法只和定义的参数类型有关,但对非静态方法调用的时候,调用的方法都是new了的对象的方法指针
静态方法和非静态方法的区别很大,不要随意去写静态方法code
重写是对非静态方法的,没有静态方法的重写(目前死记)对象
子类重写了父类的方法,父类原来的那个方法就不能被调用了继承
注意:io
为何要重写:编译
理解:class
静态方法属于静态绑定,在编译阶段已经肯定函数名和地址,静态方法固然是能够被继承的,可是却不能被重写,为何那? 由于重写的意思是从新定义父类的虚函数,可是虚函数是动态绑定的,而静态方法是静态绑定的,因此静态函数必然不能是虚函数,也就不存在所说的重写了.你在子类中从新写一个同名的函数,覆盖了父类的同名函数,在使用子类指针进行调用的时候,调用的就是子类的这个静态方法
例如:
//父类 public class b { public void test(){ System.out.println("b"); } } //子类 public class a extends b{ @Override //注解:有功能的注释 public void test() { System.out.println("a"); } } //执行类 public class zhixing { public static void main(String[] args) { a a = new a(); a.test();//输出的就是a了,由于子类重写了父类,就至关于从新改写了父类,重写后就掉不到父类的那个方法了 } }