91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java怎么封裝實現訪問限定符和包

發布時間:2022-08-23 16:58:43 來源:億速云 閱讀:134 作者:iii 欄目:開發技術

本篇內容主要講解“Java怎么封裝實現訪問限定符和包”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Java怎么封裝實現訪問限定符和包”吧!

    一. 封裝

    封裝是面向對象的三大特性之一;面向對象程序三大特性:封裝、繼承、多態 。

    封裝:將數據和操作數據的方法進行有機結合,隱藏對象的屬性和實現細節,僅對外公開接口來和對象進行交互(簡單來說就是套殼屏蔽細節)。

    用生活中的實物來理解封裝,比如電腦:

    對于電腦這樣一個復雜的設備,提供給用戶的就只是:開關機、通過鍵盤輸入,顯示器,USB插孔等,讓用戶來和計算機進行交互,完成日常事務。

    但實際上:電腦真正工作的卻是CPU、顯卡、內存等一些硬件元件。對于計算機使用者而言,不用關心內部核心部件,比如主板上線路是如何布局的,CPU內部是如何設計的等,用戶只需要知道,怎么開機、怎么通過鍵盤和鼠標與計算機進行交互即可。因此計算機廠商在出廠時,在外部套上殼子,將內部實現細節隱藏起來,僅僅對外提供開關機、鼠標以及鍵盤插孔等,讓用戶可以與計算機進行交互即可

    二. 訪問限定符(修飾符)

    Java中主要通過類和訪問權限來實現封裝:類可以將數據以及封裝數據的方法結合在一起,更符合人類對事物的認知,而訪問權限用來控制類或者類中方法或者字段能否直接在類外使用。Java中提供了四種訪問限定符:

    Java怎么封裝實現訪問限定符和包

    public:公開的,可以理解為一個人的外貌特征,誰都可以看得到

    protected:受保護的,涉及到繼承中的知識,繼承博客中詳細介紹

    default: 什么都不寫時的默認權限,對于自己家族中(同一個包中)不是什么秘密,對于其他人來說就是隱私了

    private:私有的,只有自己知道,其他人都不知道

    通過下面給出的代碼示例理解封裝:

    class Person {
        private String name;
        //private修飾的成員變量只能在本類中訪問
        private int age;
    
        String sex;
        //這里不加修飾符即為默認權限,默認是default權限
    
        public String getName() {
            return name;
        }
        //在其他類中不能直接訪問name和age,
        //但可以在本類中提供公開的(public修飾)訪問方法和外界進行交互
        //這里就是對成員變量進行了封裝
        public void setName(String name) {
            this.name = name;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
        public void show() {
            System.out.println("姓名:"+name+" 年齡: "+age);
        }
    }
    
    public class Test {
    
        public static void main(String[] args) {
            Person person = new Person();
            //person.name = "bit";//不能直接進行訪問
            person.setName("XIN-XIANG榮");
            person.setAge(21);
            //通過提供Person類中提供的方法間接進行訪問
            System.out.println(person.getName()+" => "+person.getAge());
        }
    }

    一般情況下成員變量設置為private,成員方法設置為public,通過這個例子就可以很好的理解封裝了,這里對 類 內部的實現細節進行了隱藏/封裝,對 外 只提供一些公開的方法供其他用戶進行訪問。

    【訪問限定符的使用場景】:

    • 我們希望類要盡量做到 “封裝”, 即隱藏內部實現細節, 只暴露出 必要 的信息給類的調用者.

    • 因此我們在使用的時候應該盡可能的使用 比較嚴格 的訪問權限;例如如果一個方法能用 private, 就盡量不要用 public.

    • 另外, 還有一種 簡單粗暴 的做法: 將所有的字段設為 private, 將所有的方法設為 public. 不過這種方式屬于是對訪問權限的濫用, 不過最好寫代碼的時候思考該類提供的字段方法到底給 “誰” 使用(是類內部自己用, 還是類的調用者使用, 還是子類使用)

    三. 包

    1. 包的概念

    在面向對象體系中,提出了一個軟件包的概念,即:為了更好的管理類,把多個類收集在一起成為一組,稱為軟件包。 有點類似于目錄。比如:為了更好的管理電腦中的圖片,一種好的方式就是將相同屬性的圖片放在相同文件下,也可以對某個文件夾下的圖片進行更詳細的分類 。

    Java怎么封裝實現訪問限定符和包

    在Java中也引入了包,包是對類、接口等的封裝機制的體現,是一種對類或者接口等的很好的組織方式,比如:一個包中的類不想被其他包中的類使用。包還有一個重要的作用:在同一個工程中允許存在相同名稱的類,只要處在不同的包中即可

    2. 導入包中的類

    2.1 導入方法一

    Java 中已經提供了很多現成的類供我們使用. 例如Date類:可以使用 java.util.Date 導入 java.util 這個包中的 Date類.

    public class Test1 {
        public static void main(String[] args) {
            java.util.Date date = new java.util.Date();
            // 得到一個毫秒級別的時間戳
            System.out.println(date.getTime());
        }
    }
    2.2 導入方法二

    但是這種寫法比較麻煩一些, 可以使用 import語句導入包

    import java.util.Date;
    public class Test1 {
        public static void main(String[] args) {
            Date date = new Date();
            // 得到一個毫秒級別的時間戳
            System.out.println(date.getTime());
        }
    }
    2.3 導入方法三

    如果需要使用 java.util 中的其他類, 可以使用 import java.util.* ,這里可以導入java.util這個包中的所有類,但要注意不是一下子將所有類都導進來,在代碼中用到誰就會導入誰。

    import java.util.*;
    public class Test1 {
        public static void main(String[] args) {
            Date date = new Date();
            // 得到一個毫秒級別的時間戳
            System.out.println(date.getTime());
        }
    }

    但是更建議顯式的指定要導入的類名. 否則還是容易出現沖突的情況.

    import java.util.*;
    import java.sql.*;
    public class Test1 {
        public static void main(String[] args) {
    // util 和 sql 中都存在一個 Date 這樣的類, 此時就會出現歧義, 編譯出錯
            Date date = new Date();
            System.out.println(date.getTime());
        }
    }
    
    // 編譯出錯
    //Error:(5, 9) java: 對Date的引用不明確
    //java.sql 中的類 java.sql.Date 和 java.util 中的類 java.util.Date 都匹配

    在這種情況下需要使用完整的類名

    import java.util.*;
    import java.sql.*;
    public class Test1 {
        public static void main(String[] args) {
            java.util.Date date = new java.util.Date();
            System.out.println(date.getTime());
        }
    }
    2.4 導入靜態的方法和字段
    import static java.lang.Math.*;
    public class Test {
        public static void main(String[] args) {
            double x = 30;
            double y = 40;
    // 靜態導入的方式寫起來更方便一些.
    // double result = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));
            double result = sqrt(pow(x, 2) + pow(y, 2));
            System.out.println(result);
        }
    }
    
    //對比正常的導入和使用
    import java.lang.Math;
    public class Test1 {
        public static void main(String[] args) {
            double x = 30;
            double y = 40;
            double result = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));
            System.out.println(result);
        }
    }

    3. 自定義包

    3.1 基本使用規則:
    • 在文件的最上方加上一個 package 語句指定該代碼在哪個包中.

    • 包名需要盡量指定成唯一的名字, 通常會用公司域名的顛倒形式(例如com.bat.demo1 ).

    • 包名要和代碼路徑相匹配. 例如創建 com.bat.demo1 的包, 那么會存在一個對應的路徑 com/bat/demo1 來存儲代碼

    • 如果一個類沒有 package 語句, 則該類被放到一個默認包中

    3.2 IDEA中創鍵自定義包

    在 IDEA 中先新建一個包: 右鍵 src -> 新建 -> 包

    Java怎么封裝實現訪問限定符和包

    在彈出的對話框中輸入包名, 例如 com.bat.demo1 ,敲入回車即可

    Java怎么封裝實現訪問限定符和包

    在包中創建類, 右鍵包名 -> 新建 -> 類, 然后輸入類名回車即可.

    Java怎么封裝實現訪問限定符和包

    此時可以看到我們的磁盤上的目錄結構已經被 IDEA 自動創建出來了

    Java怎么封裝實現訪問限定符和包

    同時我們也看到了, 在新創建的 Test.java 文件的最上方, 就出現了一個 package 語句

    Java怎么封裝實現訪問限定符和包

    4. 不同包中的訪問權限控制

    Computer類位于com.bat.demo1包中,TestComputer位置com.bat.demo2包中

    package com.bat.demo1;
    
    public class Computer {
        private String cpu; // cpu
        private String memory; // 內存
        public String screen; // 屏幕
        String brand; // 品牌
    
        public Computer(String brand, String cpu, String memory, String screen) {
            this.brand = brand;
            this.cpu = cpu;
            this.memory = memory;
            this.screen = screen;
        }
    
        public void Boot() {
            System.out.println("開機~~~");
        }
    
        public void PowerOff() {
            System.out.println("關機~~~");
        }
    
        public void SurfInternet() {
            System.out.println("上網~~~");
        }
    }

    Java怎么封裝實現訪問限定符和包

    注意:如果去掉Computer類之前的public修飾符,Computer類為默認權限,只能在同一包中訪問,代碼也會編譯失敗

    5. 常見的包

    • java.lang:系統常用基礎類(String、Object),此包從JDK1.1后自動導入。

    • java.lang.reflect:java 反射編程包;

    • java.net:進行網絡編程開發包。

    • java.sql:進行數據庫開發的支持包。

    • java.util:是java提供的工具程序包;(集合類等) 非常重要

    • java.io:I/O編程開發包。

    到此,相信大家對“Java怎么封裝實現訪問限定符和包”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    本溪市| 威海市| 仙居县| 丰镇市| 湖北省| 绿春县| 清苑县| 江西省| 明光市| 乐至县| 沾化县| 洪江市| 永丰县| 漠河县| 泗阳县| 塘沽区| 三都| 隆安县| 永定县| 吴桥县| 会泽县| 舒城县| 邻水| 柳林县| 崇左市| 哈密市| 当涂县| 房山区| 石狮市| 玛纳斯县| 邹平县| 华池县| 秦皇岛市| 松滋市| 确山县| 宜君县| 楚雄市| 安化县| 沂南县| 大洼县| 武山县|