重写
什么是重写?
重写就是在子类中对于父类可以继承的方法的重新编写。
重写时父类的返回值与形参不可以改变!
举个例子:
public static void main(String[] args) {
Child a=new Child();
a.which();//执行Child的方法
Mother b= new Mother();
b.Which();//执行Mother的方法
}
}
class Child{
public void which() {
System.out.println("小明");
}
}
class Mother extends Child{
//方法的重写
public void Which() {
System.out.println("小明的妈妈");
}
重写的注意点:
- 父类的成员方法只能被他的子类重写
- 声明为final和static的方法不能重写
- 构造方法不可以重写
- 子类只能重写可以继承的方法
- 子类与父类在同一个包中,那么出private和final类的方法不可以重写外其余方法都可以重写。假如子类与父类不在一个包中,那么子类只能重写父类的public方法和非final的protected方法。
重载
什么是重载?
重载就是在一个类中方法名相同而参数不同、返回值可以不同。像我们经常使用的System.out.println()也是一种重载。
重载规则:
- 被重载的方法参数的个数或类型不可以一样
- 重载方法返回值可以不一样
- 可以改变访问修饰符
- 可以在子类中重载
举个例子:
public static void main(String[] args) {
Child a=new Child();
a.which(1,2);
a.which();
a.which(2);
}
}
class Child{
public void which() {
System.out.println("小明");
}
public int which(int a,int b) {
System.out.println(a+b);
return a;
}
public void which(int a) {
System.out.println(a);
}