重写:一般发生在子类继承父类的时候会进行重写
重写需要注意的几点:
- 父类public,protected修饰的方法可以进行重载,但是private修饰的方式不能被重载,final修饰的任何方法都不能被重载
- 子类重写父类的方法时,子类方法的修饰符的访问权限要大于等于父类
- 子类的参数类型、参数个数、返回类型必须和父类一致
public class Test1 { public class bird{ public void speak(){//能够继承 System.out.println("叽叽喳喳"); } private void eat(){//不能继承,因为是私有方法 System.out.println("吃食物"); } protected void fly(){//能够继承 System.out.println("飞翔"); } final public void sleep(){//不能够继承,被final修饰 System.out.println("休息"); } public void craw(String s){ System.out.println("爬行"); } } public class goose extends bird{ public void speak(){ System.out.println("布谷布谷"); } protected void speak(){//报错,权限应该大于父类的访问权限 System.out.println("大雁叫"); } public void eat(){//没有继承,父类为私有方法 System.out.println("吃虫子"); } public void fly(){ System.out.println("高空飞翔"); } private void fly(){//会报错,子类修饰符权限应该大于父类的访问权限 System.out.println("大雁飞翔"); } public void sleep(){//会报错,不能继承,因为该方法被final修饰 System.out.println("大雁休息"); } public void craw(String s){//可以继承,参数类型个数和返回类型一致 System.out.println("大雁不能爬行"); } public int craw(String s){//不能继承,返回类型不一致 return Integer.parseInt(null); } public void craw(String s,int a){//不可以继承,参数个数不一致 System.out.println("大雁不能爬行"); } }}
重载:为了体现出类的多态性,在一个类中创建函数名相同,但是返回值和参数列表不一致的方法
public class animal{ /** * 下面三种均为重载 * @param a */ public void speak(int a){ System.out.println("咩咩"); } public void speak(int a,String b){//参数列表不一致 System.out.println("喵喵"); } public int speak(int a,int b){//返回类型和参数类型个数均不一致 return 0; } }