欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

關(guān)于java的包Package中同名類的沖突及其理解

 更新時(shí)間:2023年07月10日 15:33:53   作者:鐘眞龍  
這篇文章主要介紹了關(guān)于java的包Package中同名類的沖突及其理解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

java的包Package中同名類的沖突及理解

在一個(gè)項(xiàng)目中建立三個(gè)包分別為

  • chapter2
  • pack2
  • pack3

其中初始化(主)函數(shù)在InitialTelphone類里,看圖顯然是在chapter2包里。

這是chapter2包下的Telphone類實(shí)現(xiàn)

package chapter2;
public class Telphone {
  //屬性
	 private float cup;
	 private float screen;
	 private float mem;
  //get set方法
	 public float getScreen() 
	 {
		 return screen;
	 }
	 public void setScreen(float newScreen) 
	 {
		 screen=newScreen;
	 }
	 //方法	
	 public Telphone() 
	 {
		 System.out.println("第一個(gè)包的Telphone類");
	 }
}

這是pack2包下的Telphone類實(shí)現(xiàn)

package pack2;
public class Telphone {
     public Telphone() {
		// TODO Auto-generated constructor stub
    	 System.out.println("第二個(gè)包的類Telphone");
	}
}

這是pack3包下的Telphone類實(shí)現(xiàn)

package pack3;
public class Telphone {
   public Telphone() {
	// TODO Auto-generated constructor stub
	   System.out.println("第三個(gè)包的Telphone類");
}
}

chapter2包下的initialTelphone類實(shí)現(xiàn)

package chapter2;
public class InitalTelphone {
	public static void main(String[] args) {
		//通過(guò)無(wú)參方法生成對(duì)象
	 Telphone tel=new Telphone();	
	}
}

在initialTelphone文件寫沒(méi)有導(dǎo)入包pack2.Telphone和pack3.Telphone

執(zhí)行程序?qū)?huì)得到以下結(jié)果:

第一個(gè)包的Telphone類

若在initialTelphone文件中導(dǎo)入pack2.telphone

intialTelphone代碼改變?nèi)缦拢?/p>

package chapter2;
import pack2.Telphone;
public class InitalTelphone {
	public static void main(String[] args) {
		//通過(guò)無(wú)參方法生成對(duì)象
	 Telphone tel=new Telphone();
	}
}

執(zhí)行程序會(huì)發(fā)現(xiàn)結(jié)果為:  

第二個(gè)包的類Telphone

但是如果導(dǎo)入的包形式為:impor pack2.*;

package chapter2;
import pack2.*;
public class InitalTelphone {
	public static void main(String[] args) {
		//通過(guò)無(wú)參方法生成對(duì)象
	 Telphone tel=new Telphone();
	}
}

程序運(yùn)行結(jié)果又發(fā)生了變化:

第一個(gè)包的Telphone類

如果同時(shí)導(dǎo)入pack2.Telphone和pack3.Telphone

則會(huì)發(fā)生包沖突報(bào)錯(cuò)

The import pack3.Telphone collides with another import statement

package chapter2;
import pack2.Telphone;
import pack3.Telphone;;
public class InitalTelphone {
	public static void main(String[] args) {
		//通過(guò)無(wú)參方法生成對(duì)象
	 Telphone tel=new Telphone();
	}
}

但是把pack2.telphone格式改為pack2.*,pack3.Telphone保持不變

package chapter2;
import pack2.*;
import pack3.Telphone;;
public class InitalTelphone {
	public static void main(String[] args) {
		//通過(guò)無(wú)參方法生成對(duì)象
	 Telphone tel=new Telphone();
	 //有參構(gòu)造方法生成對(duì)象
	 //Telphone tel2=new Telphone(4.0f,3.0f,1.5f);
	}
}

程序執(zhí)行結(jié)果為:

第三個(gè)包的Telphone類

顯然如果把pack3.Telphone格式也改為pack3.*,結(jié)果可想而知:

第一個(gè)包的Telphone類

但是如果把chapter2中的Telphone類給刪除了

導(dǎo)入包的格式為pack2.*;pack3.*;

運(yùn)行程序就會(huì)出現(xiàn)沖突錯(cuò)誤:

        The type Telphone is ambiguousThe type Telphone is ambiguous

如果只導(dǎo)入Pack2.*或者只導(dǎo)入Pack3.*則又可以運(yùn)行成功:

(import Pack2.*;)結(jié)果:第二個(gè)包的Telphone類

(import Pack3.*;)結(jié)果:第三個(gè)包的Telphone類

通過(guò)上述程序的測(cè)試,

我知道了包重名類的簡(jiǎn)單運(yùn)行機(jī)制:

1、如果沒(méi)有導(dǎo)入任何包,主函數(shù)運(yùn)行時(shí)創(chuàng)建類的實(shí)例首先從自己所在的包里面找

2、如果導(dǎo)入一個(gè)包,并且導(dǎo)入該包的形式精確到重名的類,則主函數(shù)創(chuàng)建重名類實(shí)例將會(huì)從導(dǎo)入的包里找

3、如果導(dǎo)入一個(gè)包,包的格式為  import 包名.*;類型的,則主函數(shù)創(chuàng)建重名類實(shí)例時(shí)首先在主函數(shù)自己所在的包里找,找不到了再去導(dǎo)入的.*包里面找

4、如果導(dǎo)入多個(gè)包,并且導(dǎo)入的多個(gè)包中只有一個(gè)導(dǎo)入類型精確到重名類,則主函數(shù)創(chuàng)建重名類實(shí)例時(shí)在導(dǎo)入精確到類的包里面找。

5、如果導(dǎo)入多個(gè)包,并且讀入的多個(gè)包中都是(import 包名.*;)類型的,主函數(shù)創(chuàng)建重名類實(shí)例時(shí)直接在自己所在包里找;如果找不到,并且導(dǎo)入的多個(gè)包里有兩個(gè)同名類就會(huì)報(bào)錯(cuò) ;

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 從搭建Struts2 開(kāi)發(fā)環(huán)境說(shuō)起

    從搭建Struts2 開(kāi)發(fā)環(huán)境說(shuō)起

    本篇文章,小編為大家介紹從搭建Struts2 開(kāi)發(fā)環(huán)境說(shuō)起,有需要的朋友可以參考一下
    2013-04-04
  • 使用MyBatis快速生成代碼的幾種方法

    使用MyBatis快速生成代碼的幾種方法

    本文主要介紹了如何使用MyBatis快速生成代碼的幾種方法,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2023-12-12
  • SpringBoot如何返回Json數(shù)據(jù)格式

    SpringBoot如何返回Json數(shù)據(jù)格式

    這篇文章主要介紹了SpringBoot如何返回Json數(shù)據(jù)格式問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Java流處理stream使用詳解

    Java流處理stream使用詳解

    Java8的另一大亮點(diǎn)Stream,它與java.io包里的InputStream和OutputStream是完全不同的概念,下面這篇文章主要給大家介紹了關(guān)于Java8中Stream詳細(xì)使用方法的相關(guān)資料,需要的朋友可以參考下
    2022-10-10
  • java基于AspectJ(面向切面編程)編碼示例分享

    java基于AspectJ(面向切面編程)編碼示例分享

    AspectJ是一種面向切面程序設(shè)計(jì)的基于Java的實(shí)現(xiàn),下面對(duì)過(guò)示例學(xué)習(xí)他的使用方法,需要的朋友可以參考下
    2014-02-02
  • 淺析Spring的事務(wù)實(shí)現(xiàn)原理

    淺析Spring的事務(wù)實(shí)現(xiàn)原理

    這篇文章主要為大家詳細(xì)介紹了Spring中事務(wù)實(shí)現(xiàn)的原理,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Spring有一定的幫助,需要的可以參考一下
    2022-11-11
  • Java面試題沖刺第三十天--數(shù)據(jù)庫(kù)(6)

    Java面試題沖刺第三十天--數(shù)據(jù)庫(kù)(6)

    這篇文章主要為大家分享了最有價(jià)值的三道關(guān)于數(shù)據(jù)庫(kù)的面試題,涵蓋內(nèi)容全面,包括數(shù)據(jù)結(jié)構(gòu)和算法相關(guān)的題目、經(jīng)典面試編程題等,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Mybatis-plus 雙主鍵的實(shí)現(xiàn)示例

    Mybatis-plus 雙主鍵的實(shí)現(xiàn)示例

    本文主要介紹了Mybatis-plus 雙主鍵的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-05-05
  • C++和Java命令行繪制心形圖案

    C++和Java命令行繪制心形圖案

    這篇文章主要為大家詳細(xì)介紹了C++和Java命令行繪制心形圖案,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • 解決JDBC連接Mysql長(zhǎng)時(shí)間無(wú)動(dòng)作連接失效的問(wèn)題

    解決JDBC連接Mysql長(zhǎng)時(shí)間無(wú)動(dòng)作連接失效的問(wèn)題

    這篇文章主要介紹了解決JDBC連接Mysql長(zhǎng)時(shí)間無(wú)動(dòng)作連接失效的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-03-03

最新評(píng)論