java封裝和包

來源:互聯網
上載者:User

通過DOS命令運行編譯java檔案:

1>運行,輸入cmd;

2>進入DOS介面,輸入cd: 檔案名稱路徑,斷行符號

3>輸入所在盤,斷行符號

4>輸入javac java檔案名稱.java

5>輸入java java檔案名稱

如:


一、封裝:將客觀事物封裝成抽象的類,並且類可以把自己的資料和方法只讓可信的類或者對象操作,對不可信的對象將屬性和實現的細節進行隱藏。

封裝的作用:

1>安全、方便

2>將可變性進行隔離

3>提高代碼的重用性

屬性的封裝。見下面的代碼:

class Student{String name;int age;public void show(){System.out.println(name+",今年"+age+"歲");}}public class lesson {public static void main(String args[]){Student s=new Student();s.name="許增強";s.setAge(-20);s.show();}}

如果不將age的修飾符設為private,那麼在類外就可以隨意更改它的值,如上,將age=-20,就會出現錯誤,因為年齡不可能為負數。

所以要隱藏age的屬性,使其值在類外不能被隨意修改。就需要加上private修飾符。

對私人成員屬性進行訪問的方法的命名規範:

1>public void setXxx(參數) 為參數的賦值提供介面

2>public 類型 getXxx() 擷取參數值

代碼修改如下:

class Student{String name;private int age;public void setAge(int age){  if(age>=0 && age<=150)    {this.age=age;show();    }else System.out.println("有這樣的年齡呀~");}public void show(){System.out.println(name+",今年"+age+"歲");}public int getAge(){return age;}}public class lesson {public static void main(String args[]){Student s=new Student();s.name="許增強";//s.age=-20; age為私人成員變數,不能被類外直接存取s.setAge(-20);}}

二、包:類似於作業系統中的檔案夾。

1>用於對多個java檔案進行分門別類的管理。

2>解決命名衝突的問題(名字相同,內容不同),作業系統對檔案夾的名字不區分大小寫,但是包名區分大小寫。

Java程式中包的定義:

package 包名;

注意:一定要放在java程式中的第一句。

對帶包的java檔案進行編譯:javac -d . java檔案

運行時必須帶上包的完整類名:java 包名.類名

包名的命名規範:

1>如果定義的包有多級:a.b.c.d(即a包中包含子包b,b包中包含子包c....),包名區分大小寫。

2>包名的命名不能以純數字命名。

3>公司做軟體開發,一般會將URL地址反轉作為包名。

如:藍狐培訓URL地址為:www.bluefox.com.cn。

這個時候包的命名為:cn.com.bluefox.項目名。

帶包的java程式編寫,以eclipse為例:

建立一個lesson工程,單擊src,點擊New,選中package,建立一個包com

,然後在com包中建立一個子包bluefox,方法同上,在名字中輸入com.bluefox:

在bluefox中建立student類,單擊com.bluefox選擇New\Class,在Name中輸入類名student即可:


在student類中輸入:

package com.bluefox;public class student {String name;int age;public void show(){System.out.println("我叫"+name+",今年"+age+"歲");}}

同樣在com包中建立一個TestStudent類,單擊com選擇New\Class,在name中輸入TestStudent類.

在TestStudent類中輸入:

package com;public class TestStudent {public static void main(String args[]){student s=new student();s.name="許增強";s.age=20;s.show();}}

編譯TestStudent,會出現編譯問題:

Student是一個不能解決的類,即student類沒有被匯入進來。

由於TestStudent是在com包中,而student類在com包中的子包bluefox包中,不在同一階,所以需要將student類匯入到TestStudent類中才能運行。

包的匯入:

1>import 包名.子包....類名;  

2>import 包名.*; //將包中的所有類都匯入進來

將student類匯入到TestStudent類可以利用Eclipse工具導包捷徑:alt+/和ctrl+shift+o。

package com;import com.bluefox.student;public class TestStudent {public static void main(String args[]){student s=new student();s.name="許增強";s.age=20;s.show();}}

編譯後依然有編譯問題。

TestStudent對name,age沒有存取權限。

因為在student類中並沒有對name,age設定存取權限,所以name,age只有在同一個包中才能訪問,或者將name,age設定為public就可以被其他包中的類訪問。

Student修改後如下:

package com.bluefox;public class student {public String name;public int age;public void show(){System.out.println("我叫"+name+",今年"+age+"歲");}}

運行就可以了。

由於eclipse中預設包視圖為並列的,要想層次清楚,可以單擊window---  Navigation---Show View menu---Package presentation---Hierarchical,

變成如下圖所示:

可以清楚的看清內含項目關聯性。

eclipse中的表徵圖: :source folder(存放java源檔案的檔案夾).
:package,包.

對於bulid path,如果單擊src,點擊Bulid Path後選擇remove to bulid path,可以看到src、com等包都作為檔案夾而存在,而不是包。

這個時候再編譯就會出現:

編譯器不包含main類型,因為要編譯java檔案是編譯java的源檔案。所以碰到這個錯誤的時候,記得將src作為一個source folder才能編譯,點擊src---

Bulid Path---use as source folder,這個時候編譯就可以通過了。

Java中常用的包:

1>java.lang.*; 包含java編程的基本類,程式編程中自動匯入

2>java.sql.*;   定義了一系列於java對資料庫訪問支援

3>java.util.*;   工具類,集合架構,資料結構等。

4>java.net.*;   包含實現網路編程的類

5>java.io.*;  提供有關資料流、對象序列和檔案系統的系統輸入/輸出類

6>java.awt.*;   包含建立UI和繪圖以及影像處理的類,使用者圖形介面GUI

7>java.swing.*; 同上。





聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.