一、覆写/重写
覆写:子类定义了与父类相同的方法或属性。
覆写分为方法覆写和属性覆写
1、方法覆写
方法覆写/重写:子类定义了与父类方法名称、参数类型及个数完全相同的方法。但是被覆写不能够拥有比父类更为严
格的访问控制权限。
方法重写:一个类M继承另一个类N,N中有一个方法A,这时你在M写了一个方法B,方法B的名字、返回值以及参数都和A一样,此时B重写了A
如:
class Person{
public void print(){
System.out.println("1.[Person]类的print方法");
}
}
class Student extends Person{
public void print(){
System.out.println("2.[Student]类的print方法");
}
}
publicclassTest{
public static void main(String[]args){
new Student().print();
}
}
方法覆写时需注意:
1.你当前使用的对象是通过哪个类new的。
2.当调用某个方法,如果该方法已经被子类所覆写了,那么调用的一定是被覆写过的方法。
同时还需要注意:同时出现这三种访问控制权限:private<default<public时。那么也就意味着如果父类使用public进行方法声明,那么子类必须也使用public;如果父类使用default,那么子类可以使用default或者public。
2、属性的覆写
当子类定义了和父类属性名称完全相同的属性的时候,就成为属性的覆盖。
如:
class Person{
public String info = "Person";
}
class Students extends Person{
public String info = "Students";
}
public class Test{
public static void main(String[] args){
System.out.println(new Students().info);
}
}
二、重载
方法重载:方法名称相同。参数的类型或个数不同。
方法的签名:指的是方法名与参数,返回类型不是签名的一部分。
不能有两个名字相同、参数类型也相同却返回不同类型值的方法 。
如:
public class Test{
public static void main(String[] args){
System.out.println(add(5,5));
System.out.println(add(5,5,55));
}
public static int add(intx,inty){
return x+y;
}
public static int add(intx,inty,intz){
return x+y+z;
}
}