Java重写、覆盖、重载
首先说明一下,重写与覆盖是同一个概念,重写==覆盖。这里主要叙述一下重载,重写(覆盖)简单聊一下。
重写(覆盖)
重写一般来说就是将父类的方法重新实现。
下面简单展示一下,直接上代码 内联代码片
。
class A{
public String a(){
return "A-a";
}
public String b(){
return "A-b";
}
}
class B extends A{
public String a(){
return "B-a";
}
}
public class a12 {
public static void main(String[] args) {
A a = new A();
B b = new B();
System.out.println(a.a());
System.out.println(b.a());
System.out.println(b.b());
}
}
这里是运行结果
这里a.a()很好理解,就是调用了A类的方法 。
简单说一下后两个,由于B继承了A,A中的两个方法B同时也被B继承。所以B可以调用A中的两个方法,又因为B重写了A中的a方法,所以第二条显示B方法中的B-a,而A中的b方法未被重写,所以第三条仍是A-b。这里有介绍重写的基本规则: https://blog.csdn.net/ericbaner/article/details/3857268?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.
重载
重载的三个条件:
(1)参数数量不同
(2)参数类型不同
(3)参数数量相同的情况下,参数位置不同
这里展示代码
class P{
public String A(){
return "A";
};
public String A(int a){
return "A-a";
};
public String A(int a,String b){
return "A-int a-String b";
};
public String A(String a,int b){
return "A-String a-int b";
};
public int A(String b){
return 9999;
};
}
public class a12 {
public static void main(String[] args) {
P p = new P();
System.out.println("1--"+p.A());
System.out.println("2--"+p.A(1));
System.out.println("3--"+p.A(1, "2"));
System.out.println("4--"+p.A("2", 1));
System.out.println("5--"+p.A("1"));
}
}
这里是运行结果
1--A
2--A-a
3--A-int a-String b
4--A-String a-int b
5--9999
编译器会根据所给参数的不同自主选择对应的函数进行调用。