重写(Override)
重写是子类对父类的允许访问的方法(非private 和 final)的实现过程(核心内容)进行重新编写,方法名、形参、返回值类型 都不能改变。
重写的好处在于子类可以根据自己的需要,定义自己的行为(方法的内容)。
重写的规则:
1、方法名、形参、返回值类型都必须与重写的方法相同。
2、访问权限不能比父类中被重写的方法访问权限低,比如:如果父类中被重写的方法访问权限为public,那么子类中重写该方法就不能声明为protected。
3、如果子类和父类在同一个包,那么子类可以重写父类中除了声明为private、final、static 的所有方法,但是static的方法可以被重新声明。
4、如果子类和父类不在同一个包,那么子类只能重写父类中声明为public、protected的非final 方法。
5、构造方法不能被重写。
Super关键词的使用:
如果子类要调用父类被重写的方法时要使用super关键词。
public class Animal {
public void move(){
System.out.println("动物能跑");
}
}
public class Dog extends Animal{
public void move(){
//应用super()类的方法
super.move();
System.out.println("狗能跑");
}
}
public class Demo {
public static void main(String[] args) {
//实例化Dog()对象
Animal a = new Dog();
//执行Dog类的move()方法
a.move();
}
}
重载(Overload)
重载是在一个类里面存在多个方法名相同、参数一定不同、返回值类型可以相同也可以不同 的方法。
每一个重载方法都必须有一个独一无二的参数类型列表。
实例:
public class Overload {
public int test(){
System.out.println("test1");
return 1;
}
public void test(int a){
System.out.println("test2");
}
public String test(String s,int a){
System.out.println("test3");
return "test3";
}
public String test(int a,String s){
System.out.println("test4");
return "test4";
}
public static void main(String[] args) {
Overload o = new Overload();
System.out.println(o.test());
o.test(1);
System.out.println(o.test("test3", 1));
System.out.println(o.test(1, "test4"));
}
}