重写:1、在同一个包中,父类的private和final的方法不能被子类重写
2、不在同一个包,则只能重写非final的protected和public父类的方法
3、对同一个东西进行重新写,所以必须同名同参同返回值类型
4、重写出来的方法的访问权限不能比父类低(依赖于父类的访问权限)
1 static class Animal{ 2 //父类方法定义为static,则子类不可以重写,除非也定义为static 3 public static void move(){ 4 System.out.println("动物可以行走"); 5 } 6 } 7 static class Dog extends Animal{ 8 public static void move(){ 9 System.out.println("狗会跑"); 10 } 11 public void bark(){ 12 System.out.println("狗会叫"); 13 } 14 }
当在子类中要调用父类的方法时,可以用super关键字或者new一个父类对象
1、如果用super关键字,则父类的方法不能被定义为static,否则无法调用
2、new一个父类对象就不存在这个问题了,是完全可以调用的
注意:子类也可以直接super(xx,xx); 默认调用的是父类的构造函数
重载:
1、必须是同名不同参,返回类型可相同可不相同(无所谓)
2、参数列表顺序不同也是重载
3、重载出来的方法可以任意修改访问权限(相当于新写的一个方法)