同一个包中,先编写父类fugai_bike,在里面构造一个public方法,然后再编写一个子类fugai_racingbike,在里面同样构造一个同名的public move方法。然后运行,方法会被覆盖。
然后我更改一下,在两个同名方法前加static,书上说这样方法不能被重写,理论上是再运行子类的方法还是会显示父类的方法输出。然而我运行之后,还是和没加static一样。
到底static有什么用呢?
所谓覆盖,就是通过父类调用子类的实例方法,调用的是子类的代码,比如
class A { public void foo() { print("a"); } }
class B extends A { @override public void foo() { print("b"); } }
A a = new B();
b.foo(); //输出b而不是a
你把申明的修改成父类的,就看出区别了。把第13行 fugai_racingbike r修改成 fugai_bike r
重写父类方法有个标志就是有@override, 加了static的方法不能被子类重写, 加不了这个标志,所以子类是无法重写父类的static方法,
因此子类就调用不到父类的move方法,所以理论上你要新建父类对象才能使用父类的方法 而你新建的子类用的是自己的move方法,
两个方法相当于独立开了。
另外静态方法不需要 新建对象 直接fugai_bike.move 就可以了
static 静态方法属于某个类,不需要实例就能使用
这个 static 静态 main 方法是程序的入口,java程序如果单独运行需要从main函数开始执行