方法与方法的定义
因为静态方法是类的方法,而非静态是对象的方法
有static时,b调用了B类的方法,因为b是用b类定义的
没有static时,b调用的是对象的方法 ,而b是用A类new的
即b是A new出来的对象,因此调用了A的方法
静态方法和非静态方法的区别
1.静态方法
package oop.Demo07;
//重写就是方法的重写,和属性无关
public class B {
public static void text(){
System.out.println("B=>text()");
}
}
package oop.Demo07;
public class A extends B {
public static void text(){
System.out.println("A=>text()");
}
}
package oop.Demo07;
import oop.Demo07.*;
public class APPlication {
public static void main(String[] args) {
//方法的调用只和左边 定义的数据类型有关
A a=new A();
a.text();
//父类的引用指向了子类
B b=new A();
b.text();
}
}
//输出:A=>text()
// B=>text()
2.非静态方法
package oop.Demo07;
//重写就是方法的重写,和属性无关
public class B {
public void text(){
System.out.println("B=>text()");
}
}
package oop.Demo07;
public class A extends B {
@Override
public void text() {
System.out.println("A=>text()");
}
}
package oop.Demo07;
public class APPlication {
public static void main(String[] args) {
//方法的调用只和左边 定义的数据类型有关
A a=new A();
a.text();
//父类的引用指向了子类
B b=new A();//子类重新的父类的方法
b.text();
}
}
//输出:A=>text()
// A=>text()
总结:
条件:需要有继承关系,子类重新父类的方法
特点:
-
1.方法名必须相同
-
2.参数列表必须相同
-
3.修饰符:范围可以扩大,但不能缩小:例如 父类是private 可以转变为public,反向不能
public>protected>Default(默认)>private
-
4.抛出的异常:范围,可以为缩小,但不能扩大
ClassNotFoundException:找不到类(小)----->Exception(大)
-
5.重写,子类的方法和父类必须一致,方法体(方法里的内容)不同
为什么需要重写:
-
父类的功能,子类不一定需要,或者不一定满足
例如:子类在父类的基础上进行升级,长江后浪推前浪,求同存异
快捷键:Ctrl + O 或者 Alt+insert---->Override Methods