重写都是方法的重写,与属性无关
静态方法和非静态方法的差别非常大,不能乱写static
静态方法:方法的调用只和左边,定义的数据类型有关
package com.oo.oop.rewrite;
?
public class B {
public static void test(){
System.out.println("B=>test()");
}
}
?
package com.oo.oop.rewrite;
?
public class A extends B{
public static void test(){
System.out.println("A=>test()");
}
}
?
package com.oo;
?
?
import com.oo.oop.rewrite.A;
import com.oo.oop.rewrite.B;
?
// 一个项目应该只有一个main()方法
public class Application {
//静态方法和非静态方法区别非常大
//静态方法 //方法的调用只和左边,定义的数据类型有关
public static void main(String[] args) {
?
A a = new A();
a.test();
?
//父类的引用指向了子类
B b=new A();//子类重写了父类的方法(重写只和非静态方法有关)
b.test();
?
?
}
}
?
出现的结果是: A=>test() B=>test()
非静态的方法才是重写
重写的关键词只能是public不能是private
package com.oo.oop.rewrite;
?
public class B {
public void test(){
System.out.println("B=>test()");
}
}
?
package com.oo.oop.rewrite;
?
public class A extends B{
//Override 重写
package com.oo;
?
?
import com.oo.oop.rewrite.A;
import com.oo.oop.rewrite.B;
?
// 一个项目应该只有一个main()方法
public class Application {
//静态方法和非静态方法区别非常大
//静态方法 //方法的调用只和左边,定义的数据类型有关
//非静态方法:重写
public static void main(String[] args) {
?
A a = new A();
a.test();
?
//父类的引用指向了子类
B b=new A();//子类重写了父类的方法(重写只和非静态方法有关)
b.test();
?
?
}
}
?
出现的结果则是:
A=>test() A=>test()
重写需要有继承关系,且是子类重写父类 方法
重写:子类的方法和父类必须一致,且方法体不同
方法名必须相同
参数列表必须相同
修饰符:范围可以扩大,不能缩小。(public>protected>Default>private)
抛出的异常:范围可以缩小,不能扩大。
父类的功能子类不一定需要或者不一定满足
原文:https://www.cnblogs.com/Share-my-life/p/14727863.html