重写:当子类需要父类的功能,而子类有新的内容,为了使其准确描述子类的行为,则需要重写。方法重写又称为方法覆盖、方法复写。
方法重写的特点:
-重写后的方法要与父类中的方法名,参数列表(参数类型和参数个数)一致,不包括参数名;
-如果父类方法的返回值为void或基本数据类型则重写后的方法要与返回值相同;
-如果父类方法的返回值为引用数据类型,则重写后的方法返回值类型要么与分类一致,要么是父类返回值类型的子类(Object是所有类的父类,String没有子类);
-子类要重写的方法,方法的权限修饰符不能比父类低(public protected 默认 private);
-父类私有的方法不能被重写(private);
-父类方法用static修饰,则不可被重写但可被继承;
父类中非静态方法,子类重写后不能添加static;
实例:
-创建父类方法:
public class Father {
public void eat() {
System.out.println("用筷子吃饭");
}
public void work(){
System.out.println("白天工作");
}
}
-创建子类方法:
public class Son extends Father{
@Override
public void eat() {
super.eat();
System.out.println("用刀叉吃饭");
}
public void work(){
System.out.println("晚上工作");
}
}
-创建Test1类调用:
public class Test1 {
public static void main(String[] args) {
Son son = new Son();
son.eat();
son.work();
Father father = new Father();
father.eat();
father.work();
}
}
实例分析:
1.使用super关键字可以在子类中调用父类方法
2.注解:@Override表示方法被重写
3.子类重写了父类的方法,则使用子类创建的对象调用该方法时,调用的是重写后的方法
4.重写时函数的返回值类型、函数名、参数列表都一样