程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> Java學習 (十一)、面向對象編程(三)封裝--包,java面向對象編程

Java學習 (十一)、面向對象編程(三)封裝--包,java面向對象編程

編輯:JAVA綜合教程

Java學習 (十一)、面向對象編程(三)封裝--包,java面向對象編程


打包的意義:

①   標准Java庫是由一系列包組成,包括java.lang,java.util,java.net等。標准Java包就是層次型包結構,就如同硬盤上嵌套的子目錄一樣,我們可以使用嵌套層次結構來組成包;

②   Java的包是為了更好地規劃代碼,防止命名沖突和混亂。所以Java出現了打包機制;

③   當把類組織起來放進一個包內之時,也就給包中的成員賦予了相互訪問的權限,就“擁有”了該包內的程序代碼;

④   包訪問權限為把類聚集在一個包中這一做法提供了意義和理由;

package----聲明包

 

package com.iotek.ch09;

public class lotekTeacher{

           private String name;//教師的姓名

           private int age;//教師的年齡

           /**

           *包訪問權限

           *@return 自我介紹的內容

           */

           String introduction(){

         return “大家好我是”+name+”,今年”+age+”歲”;

}

}

①   包名由小寫單詞組成;

②   Java程序員都可以編寫屬於自己的Java包,為了保障每個Java包命名的唯一性,編程規范要求程序員在自己定義包的名稱之前加上唯一前綴;

③   由於互聯網上的域名名稱是不會重復的,所以一般推薦采用公司在互聯網上的域名的倒置作為包的唯一前綴;

 

一個類可以使用同一包中所有類以及其它包中的所有公開類

我們可以通過兩種方式訪問其它包中的公開類

①   簡單在每個類前面加上完整包名,例如java.util.Date today=new java.util.Date();

②   更簡潔更通用的方式是:使用import語句來導包

import java.util.Date;

Date today=new Date();

 

可以import特定類,也可以導入整個包。通過在源代碼文件的頂部(在打包語句後)使用import導入語句來實現。

步驟:

在d盤下的javastudy文件夾中創建一個package文件夾,在其內編寫Dog.java名稱的程序

源程序

1 package com.iotek.entity; 2 public class Dog{ 3 String name; 4 public int age; 5 public void show(){ 6 System.out.println(name+"------"+age); 7 } 8 } View Code

上面的打包路徑為com下的iotek下的entity中

 

編譯方法:進入程序路徑後 javac –d . Dog.java

編譯成功後,會在包路徑下產生編譯好的文件

 

同一個包中

在編寫一個DogTest的源程序

1 package com.iotek.entity; 2 public class DogTest{ 3 public static void main(String [] args){ 4 Dog dog=new Dog(); 5 dog.name="旺財"; 6 dog.age=5; 7 dog.show(); 8 } 9 } View Code

編譯通過之後

運行方法:java com.iotek.entity.DogTest

 

前面Dog.java中的name屬性在同個包中的其它類是可以訪問的。

 

不同包中

先將com文件夾刪除

DogTest.java中包路徑更改為package com.iotek.test;

如下

1 package com.iotek.test; 2 public class DogTest{ 3 public static void main(String [] args){ 4 Dog dog=new Dog(); 5 dog.name="旺財"; 6 dog.age=5; 7 dog.show(); 8 } 9 } View Code

同樣先編譯Dog.java程序,在編譯DogTest.java程序,此時編譯不通過

然後將DogTest.java程序再次更改

1 package com.iotek.test; 2 public class DogTest{ 3 public static void main(String [] args){ 4 com.iotek.entity .Dog dog=new com.iotek.entity . Dog(); 5 dog.name="旺財"; 6 dog.age=5; 7 dog.show(); 8 } 9 } View Code

此時編譯還是不通過

原因是Dog.java中的name屬性引起的錯誤,應該將其更改為public String name;

源程序如下

1 package com.iotek.entity; 2 public class Dog{ 3 //String name;//同個包中的其它類是可以訪問的, 4 //不同包中的其它類不能訪問使用默認訪問修飾符的屬性和方法 5 public String name; 6 public int age; 7 public void show(){ 8 System.out.println(name+"------"+age); 9 } 10 } View Code

更改後重新編譯Dog.java,再次編譯DogTest.java,此次未報錯,成功生成

然後運行java com.iotek.test.DogTest

但DogTest.java中的全局包名太過麻煩,每次使用都要寫

再更改為用import導入的方法,package必須寫第一句

1 package com.iotek.test; 2 import com.iotek.entity.Dog; 3 public class DogTest{ 4 public static void main(String [] args){ 5 Dog dog=new Dog(); 6 dog.name="旺財"; 7 dog.age=5; 8 dog.show(); 9 } 10 } View Code

 再次編譯也能夠執行。

 

綜上:

Dog.java和DogTest.java的最終代碼如下

1 package com.iotek.entity; 2 public class Dog{ 3 //String name;//同個包中的其它類是可以訪問的, 4 //不同包中的其它類不能訪問使用默認訪問修飾符的屬性和方法 5 public String name; 6 public int age; 7 public void show(){ 8 System.out.println(name+"------"+age); 9 } 10 } Dog.java 1 package com.iotek.test; 2 import com.iotek.entity.Dog; 3 public class DogTest{ 4 public static void main(String [] args){ 5 Dog dog=new Dog(); 6 dog.name="旺財"; 7 dog.age=5; 8 dog.show(); 9 } 10 } DogTest.java

然後依次

javac –d . Dog.java

javac –d . DogTest.java

java com.iotek.test.DogTest

就可以完成包的創建及其調用

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved