重载: 方法名相同,但是参数必须有区别(参数不同可以使类型不同,顺序不同,个数不同)。重写(又叫覆盖): 子类继承父类的方法,并重新实现该方法。
方法重写使用注意事项:
1.方法重写时,必须存在继承关系
2.方法重写时,方法名和形式参数必须一致。
3.方法重写时 ,子类的权限修饰符需要大于或等于父类的权限修饰符。
4.方法重写时 ,子类的返回值类型必须小于或等于父类的返回值类型
5.方法重写时 , 子类的异常类型要小于等于父类的异常类型。
在这里面主要拿第三点来测试:
public
class
a{
public
static
class
People
{
public
void
fun(){};
}
static
class
Student extends
People
{
protected
void
fun(){
System.out.println("dfdfd");
}
}
public
static
void
main(String[] args){
Student p = new
Student();
p.fun();
}
}
编译就报错了,如图:
![5fd77920ea28a5dd913b5e219cb7b423.png](https://img-blog.csdnimg.cn/img_convert/5fd77920ea28a5dd913b5e219cb7b423.png)
原因是父类的方法的权限是public ,而子类改为protected,降低了权限,所以只能大于或等于如:
public
class
a{
public
static
class
People
{
protected
void
fun(){};
}
static
class
Student extends
People
{
public
void
fun(){
System.out.println("dfdfd");
}
}
public
static
void
main(String[] args){
Student p = new
Student();
p.fun();
}
}
运行成功
![de45957e28da23809ad0e73fd7d3afb9.png](https://img-blog.csdnimg.cn/img_convert/de45957e28da23809ad0e73fd7d3afb9.png)
点击获取免费资料