重写:一般发生在子类继承父类的时候会进行重写
重写需要注意的几点:
- 父类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;
}
}