日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

[转载] Java重载、覆盖与构造函数

發布時間:2025/3/11 java 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [转载] Java重载、覆盖与构造函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

參考鏈接: Java中的繼承和構造函數

/**

?* 拷貝構造函數---Copyf t2 = new Copyf(t1);就不會在調用默認構造函數了。

?* 復制clone和引用

?* 重載是在同一個類(范圍)中,覆蓋是子類對父類而言。

? ?重載不關心返回值類型。

? ?靜態方法不能被覆蓋。

?* override可以翻譯為覆蓋,從字面就可以知道,它是覆蓋了一個方法并且對其重寫,以求達到不同的作用。對我們來說最熟悉的覆蓋就是對接口方法的實現,在接口中一般只是對方法進行了聲明,而我們在實現時,就需要實現接口聲明的所有方法。除了這個典型的用法以外,我們在繼承中也可能會在子類覆蓋父類中的方法。在覆蓋要注意以下的幾點:

? ? 1、覆蓋的方法的標志必須要和被覆蓋的方法的標志完全匹配,才能達到覆蓋的效果;

? ? 2、覆蓋的方法的返回值必須和被覆蓋的方法的返回一致;

? ? 3、覆蓋的方法所拋出的異常必須和被覆蓋方法的所拋出的異常一致,或者是其子類;

? ? 4、被覆蓋的方法不能為private,否則在其子類中只是新定義了一個方法,并沒有對其進行覆蓋。

? ? overload對我們來說可能比較熟悉,可以翻譯為重載,它是指我們可以定義一些名稱相同的方法,通過定義不同的輸入參數來區分這些方法,然后再調用時,VM就會根據不同的參數樣式,來選擇合適的方法執行。在使用重載要注意以下的幾點:

? ? 1、在使用重載時只能通過不同的參數樣式。例如,不同的參數類型,不同的參數個數,不同的參數順序(當然,同一方法內的幾個參數類型必須不一樣,例如可以是fun(int,float),但是不能為fun(int,int));

? ? 2、不能通過訪問權限、返回類型、拋出的異常進行重載;

? ? 3、方法的異常類型和數目不會對重載造成影響;

? ? 4、對于繼承來說,如果某一方法在父類中是訪問權限是priavte,那么就不能在子類對其進行重載,如果定義的話,也只是定義了一個新方法,而不會達到重載的效果。

? ? ?

? ? ?構造函數不能被繼承。

? ? 子類構造函數中必定顯示或隱式調用了父類的構造函數。

? ? 注意:當父類顯示定義了有參數的構造函數,編譯器就不會

? ? 為它指定一個參數為空的默認構造函數給子類調用了。

?*

?*/

package t;

?

import java.util.Vector;

class Copyf{

? ? private String a = "z";//屬于構造函數的一部分,且首先執行--等同于寫在構造函數中

? ? private String b;

? ? public String getA() {

? ? ? ? return a;

? ? }

? ? public void setA(String a) {

? ? ? ? this.a = a;

? ? }

? ? public String getB() {

? ? ? ? return b;

? ? }

? ? public void setB(String b) {

? ? ? ? this.b = b;

? ? }

? ? //用構造函數復制(就不會在執行默認構造函數了),根據需要復制相應的屬性。比如你不想復制屬性a,則下面第一句話a = source.a;就不用。

? ? public Copyf(Copyf source){

? ? ? ? //a = source.a;

? ? ? ? b = source.b;

? ? }

? ? //構造函數

? ? public Copyf(){

? ? ? ? System.out.println("默認構造函數");

? ? }

? ? //用方法復制。

? ? public Copyf clone(){

? ? ? ? Copyf t = new Copyf();

? ? ? ? t.a= a;

? ? ? ? t.b = b;

? ? ? ? return t;

? ? }

?

}

public class MyThreadPrinter2{? ??

?

? ? public static void main(String[] args) throws Exception {? ?

?

?

? ? ? ? Copyf t1 = new Copyf();

? ? ? ? t1.setA("a");

? ? ? ? Copyf t2 = new Copyf(t1);//拷貝構造函數---未拷貝a

?

? ? ? ? Copyf t3 = t1.clone();//一般成員方法

? ? ? ? System.out.println(t2.getA() );

? ? ? ? System.out.println(t3.getA());

?

? ? ? ? Vector<String> va = new Vector<String>();

? ? ? ? va.add("123");

? ? ? ? Vector<String> va2 = va;//引用

? ? ? ? Vector<String> va3 = (Vector<String>)va.clone();//copy-clone

? ? ? ? //va.get(0);

? ? ? ? va.set(0, "234");

? ? ? ? System.out.println(va2.get(0));

? ? ? ? System.out.println(va3.get(0));

?

?

? ? }? ?

}

總結

以上是生活随笔為你收集整理的[转载] Java重载、覆盖与构造函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。