close
文章出處
重載
重載指的是兩個或者兩個以上同名函數,但它們的參數不一樣,這時會出現函數重載的情況。比如下面這段代碼
class Test{
public void a(){
System.out.println("正常");
}
public void a(String t){
System.out.println("第二個a" + t);
}
}
class app{
public static void main(String[] args){
Test test = new Test();
test.a("啊"); // 函數被重載
test.a(); // 未被重載
}
}
------Output------
第二個a啊
正常
也就是它具體使用那個函數,是根據你的參數來決定的。
重寫
通俗講就是覆蓋,在Java好像對同一個類中,不支持重寫,下面這段代碼,運行就報錯了。
class Test{
public void a(){
System.out.println(0);
}
public void a(){
System.out.println(1);
}
}
class app{
public static void main(String[] args){
Test test = new Test();
test.a();
}
}
------Output------
app.java:5: ??: ??? Test?????? a()
public void a(){
^
1 ???
一般來說,也沒人會這么寫,使用重寫,基本上是在繼承中,比如下面這段代碼。
class Test{
public void a(){
System.out.println(0);
}
}
class Test2 extends Test{
public void a(){
System.out.println(1);
}
}
class app{
public static void main(String[] args){
Test2 test = new Test2();
test.a();
}
}
------Output------
1
Test2重寫了Test中的a方法,不過在Java中,如果你想要重寫某個方法,需要遵守幾個規則,重寫的函數返回類型需要和父類中返回的類型相同,形參相同,訪問權限不能比父類中的小,比如下面這個就有問題
class Test{
public int a(){
return 0;
}
}
class Test2 extends Test{
private int a(){
return 1;
}
}
class app{
public static void main(String[] args){
Test2 test = new Test2();
test.a();
}
}
報錯
這段代碼之所以報錯是因為,Test2的方法a比父類的a權限小,但反過是可以的。
完。
![]() |
不含病毒。www.avast.com |
全站熱搜