亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

0009 封裝

2019-11-14 09:56:53
字體:
來源:轉載
供稿:網友

封裝的定義

  面向對象有三大特性:封裝、繼承、多態。

  封裝就是將類的信息隱藏在類的內部,不允許外部程序直接訪問,而是通過該類提供的方法來實現對隱藏信息的操作和訪問。那這樣的好處是什么呢?

   1. 只能通過規定的方法訪問數據

   2. 隱藏類的實例細節,方便修改和實現。

  我們在開汽車的時候,只用去關注如何開車,我們并不在意車子是如何實現的,這就是封裝。

如何去實現類的封裝呢?

修改屬性的可見性,在屬性的前面添加修飾符

創建 getter/setter 方法,用來讀寫屬性

在 getter/setter 方法里加入屬性的控制語句,例如我們可以加一個判斷語句,對于非法輸入給予否定。

封裝的步驟

package com.shiyanlou;public class People {//屬性(成員變量)有什么,前面添加了訪問修飾符PRivate//變成了私有屬性,必須通過方法調用    private double height;     //身高//屬性已經封裝好了,如果用戶需要調用屬性//必須用getter和setter方法進行調用//getter和setter方法需要程序員自己定義    public double getHeight(){        //getter 方法命名是get關鍵字加屬性名(屬性名首字母大寫)    //getter 方法一般是為了得到屬性值        return height;    }//同理設置我們的setter方法//setter 方法命名是set關鍵字加屬性名(首字母大寫)//setter 方法一般是給屬性值賦值,所以有一個參數    public void setHeight(double newHeight){        height = newHeight;    }}

然后在我們的 main 函數里的對象,不能再直接調用屬性了,只能通過gettersetter方法進行調用。

package com.shiyanlou;public class LiLei {    public static void main(String[] args) {        // TODO Auto-generated method stub        People LiLei = new People();    //創建了一個People對象LiLei        //利用setter方法為屬性賦值        LiLei.setHeight(170.0);        //利用getter方法取屬性值        System.out.println("LiLei的身高是"+LiLei.getHeight());    }}

  我有時候在封裝的時候會遇到這樣的問題,就是我們的類名可能是重復的。這時候我們就可以用的概念來解決我們的問題。

  包的作用就是管理java文件,解決同名文件沖突。這和我們生活當中的管理相類似。我們的衣柜是不是有不同的隔斷和抽屜,我們將衣服分門別類地放好,是不是有利于我們管理。

  我們在以前就學習過了如何定義一個包,我們使用package關鍵字,加上我們的包名。

定義包語法:

package 包名//注意:必須放在源程序的第一行,包名可用"."號隔開

例如:

//我們在定義文件夾的時候利用"/"來區分層次//包中我們用"."來分層package com.shiyanlou.Java

  比如我們在游戲里會用到音樂類,在電影里我們也會用到音樂類,但是他們的類又不相同,我們就可以利用包進行區分。

  不僅是我們這樣利用包名來區分類,系統也是這樣做的。

Java系統中的包

  那我們怎么在不同包中使用另一個文件中的類呢?這時候就需要用到import關鍵字。比如我們要導入實驗樓下People這個類。import com.shiyanlou.Peole,同時如果import com.shiyanlou.*這是將包下的所有文件都導入進來。

  這里要注意一點,包的命名規范是全小寫字母拼寫。

Java 中的訪問修飾符

  訪問修飾符可以用來修飾屬性和方法的訪問范圍。

訪問范圍

  如圖所示,代表了不同的訪問修飾符的訪問范圍,比如private修飾的屬性或者方法,只能在本類中訪問或者使用。默認是什么修飾符都不加,默認在當前類中和同一包下都可以訪問和使用。

  我們可以舉一個例子,比如 money,如果我們用private修飾代表著這是私有的,只能我自己可以使用。如果是protected代表著我可以使用,和我有關系的人,比如兒子也可以用。如果是public就代表了所有人都可以使用。

Java 中的 this 關鍵字

  我們在書寫代碼的過程中常常會用到this關鍵字,this關鍵字代表當前對象。使用this.屬性操作當前對象的屬性,this.方法調用當前對象的方法。

  當我們封裝對象屬性的時候,經常會使用this關鍵字。

  接下來我們來看看代碼中是怎么實現的吧。在上面我們講了用private修飾的屬性,我們利用對象訪問的時候,必須定義getter和setter方法,其實在Eclipse中可以自動幫我們定義。

1、首先在菜單欄里點擊Source也可以在左側右擊選擇Source

創建getter和setter方法

2、選擇Grenerate Getters and Setters

創建getter和setter方法

3、系統會自動幫我們檢測需要創建getter和setter方法的屬性,我們根據需要勾選就行了。

  當系統幫我們創建好了getter和setter方法后,我們會發現系統創建的方法中參數名和我們的屬性名一樣。為了區分參數名和我們的屬性名,我們在屬性名前面添加了this關鍵字。

public void setAge(int age) {        this.age = age;    }

  此時就代表我們將一個參數的值賦給我們當前對象的屬性。同理this關鍵字可以調用當前對象的方法。

Java 中的內部類

  從字面意思我們就可以知道,內部類( Inner Class )就是定義在另外一個類里面的類,而包含內部類的類被稱為外部類。

內部類的主要作用如下:

內部類提供了更好的封裝,可以把內部類隱藏在外部類之內,不允許同一個包中的其他類訪問該類

內部類的方法可以直接訪問外部類的所有數據,包括私有的數據

內部類所實現的功能使用外部類同樣可以實現,只是有時使用內部類更方便

我們通過代碼來詳細學習一下內部類吧!

成員內部類:

package com.shiyanlou;//外部類Peoplepublic class People {    private String name = "LiLei";         //外部類的私有屬性    //內部類Student    public class Student {        String ID = "20151234";               //內部類的成員屬性        //內部類的方法        public void stuInfo(){            System.out.println("訪問外部類中的name:" + name);            System.out.println("訪問內部類中的ID:" + ID);        }    }    //測試成員內部類    public static void main(String[] args) {        People a = new People();     //創建外部類對象,對象名為a        Student b = a.new Student(); //使用外部類對象創建內部類對象,對象名為b        b.stuInfo();   //調用內部對象的suInfo方法    }}

由此,我們可以知道,成員內部類的使用方法:

Student 類相當于 People 類的一個成員變量,所以 Student 類可以使用任意訪問修飾符

Student 類在 People 類里,所以訪問范圍在類里的所有方法均可以訪問 People 的屬性(即內部類里可以直接訪問外部類的方法和屬性,反之不行)

定義成員內部類后,必須使用外部類對象來創建內部類對象,即 內部類 對象名 = 外部類對象.new 內部類();

如果外部類和內部類具有相同的成員變量或方法,內部類默認訪問自己的成員變量或方法,如果要訪問外部類的成員變量,可以使用 this 關鍵字

靜態內部類:

package com.shiyanlou;//外部類Peoplepublic class People {    private String name = "LiLei";         //外部類的私有屬性/*外部類的靜態變量。Java 中被 static 修飾的成員稱為靜態成員或類成員。它屬于整個類所有,而不是某個對象所有,即被類的所有對象所共享。靜態成員可以使用類名直接訪問,也可以使用對象名進行訪問。/*    static String ID = "510xxx199X0724XXXX";     //靜態內部類Student    public static class Student {        String ID = "20151234";               //內部類的成員屬性        //內部類的方法        public void stuInfo(){            System.out.println("訪問外部類中的ID:" + People.ID);            System.out.println("訪問內部類中的ID:" + ID);        }    }    //測試成員內部類    public static void main(String[] args) {        Student b = new Student();   //直接創建內部類對象,對象名為b        b.stuInfo();                 //調用內部對象的suInfo方法    }}

靜態內部類是 static 修飾的內部類,這種內部類的特點是:

靜態內部類不能直接訪問外部類的非靜態成員,但可以通過 new 外部類().成員 的方式訪問

如果外部類的靜態成員與內部類的成員名稱相同,可通過類名.靜態成員訪問外部類的靜態成員;如果外部類的靜態成員與內部類的成員名稱不相同,則可通過成員名直接調用外部類的靜態成員

創建靜態內部類的對象時,不需要外部類的對象,可以直接創建 內部類 對象名= new 內部類();

方法內部類

  方法內部類就是定義在外部類的方法中的內部類,方法內部類只在該方法的內部可見,即只在該方法內可以使用。

例如:

package com.shiyanlou;//外部類Peoplepublic class People {        //外部類中的方法    public void peopleInfo() {        final String sex = "man";  //外部類方法中的常量        class Student {            String ID = "20151234"; //內部類中的常量            public void print() {                System.out.println("訪問外部類的方法中的常量sex:" + sex);                System.out.println("訪問內部類中的變量ID:" + ID);            }        }        Student a = new Student();  //創建方法內部類的對象        a.print();//調用內部類的方法    }    //測試方法內部類    public static void main(String[] args) {        People b = new People(); //創建外部類的對象        b.peopleInfo();  //調用外部類的方法    }}

運行結果:

運行結果


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲аv电影天堂网| 久久夜色精品国产| 久久久人成影片一区二区三区| 国产精品精品一区二区三区午夜版| 国产成人精品久久亚洲高清不卡| 国产精品电影久久久久电影网| 亚洲国产一区二区三区四区| 亚洲人成网站在线播| 色噜噜狠狠狠综合曰曰曰| 26uuu另类亚洲欧美日本老年| 国产精品美女网站| 日韩精品免费综合视频在线播放| 国产噜噜噜噜久久久久久久久| 欧美激情在线狂野欧美精品| 国语对白做受69| 91亚洲国产成人久久精品网站| 欧美黄色小视频| 欧美亚洲成人xxx| 97在线看福利| 日韩欧美有码在线| 大胆欧美人体视频| 亚洲色图色老头| 蜜月aⅴ免费一区二区三区| 中文字幕亚洲综合久久筱田步美| 久久精品国产2020观看福利| 亚洲欧洲第一视频| 韩国v欧美v日本v亚洲| 色午夜这里只有精品| 欧美日韩激情视频8区| 日韩欧美国产黄色| 欧美理论电影网| 国产精品劲爆视频| 欧美成人午夜视频| 亚洲综合成人婷婷小说| 亚洲国产99精品国自产| 国产成人精品免高潮费视频| 91在线观看免费高清| 欧美激情手机在线视频| zzjj国产精品一区二区| 久久成人在线视频| 欧美一级视频免费在线观看| 日韩美女主播视频| 97精品视频在线播放| 成人激情在线播放| 亚洲深夜福利在线| 国产91精品久久久| 欧美日韩国产一区二区三区| 欧美天天综合色影久久精品| 日韩av高清不卡| 精品中文字幕在线| 日韩精品视频在线观看网址| 国产精品精品国产| 国产精品第3页| 欧美激情国内偷拍| 色综合视频网站| 精品在线小视频| 亚洲日本aⅴ片在线观看香蕉| 韩国19禁主播vip福利视频| 懂色av中文一区二区三区天美| 亚洲国产女人aaa毛片在线| 清纯唯美亚洲激情| 国产精品美乳一区二区免费| 日韩一区二区精品视频| 亚洲qvod图片区电影| 中文字幕亚洲欧美日韩高清| 91精品久久久久久久久不口人| 欧美一区三区三区高中清蜜桃| 日本免费一区二区三区视频观看| 日韩欧美国产免费播放| 亚洲品质视频自拍网| 久久精品99久久香蕉国产色戒| 91精品视频在线免费观看| 日韩视频精品在线| 日韩在线中文字幕| 亚洲自拍偷拍第一页| 精品国产欧美成人夜夜嗨| 欧美乱大交做爰xxxⅹ性3| 亚洲欧美一区二区三区久久| 久久影院模特热| 欧美肥老妇视频| 久久成人精品视频| 欧美专区福利在线| 国产成人亚洲综合| 亚洲欧美三级伦理| 国产97在线视频| 国产亚洲精品一区二区| 欧美日韩另类视频| 国产精品久久久久久久7电影| 国产91色在线免费| 亚洲一区免费网站| 亚洲精品国产成人| 亚洲激情电影中文字幕| 午夜免费在线观看精品视频| 久久久www成人免费精品张筱雨| 久久好看免费视频| 精品久久久久国产| 91国内精品久久| 日日狠狠久久偷偷四色综合免费| 国产一区二区日韩| 这里只有精品视频| 欧美日韩国产综合新一区| 57pao成人国产永久免费| 亚洲欧美制服综合另类| 成人午夜激情免费视频| 成人精品视频久久久久| 日韩在线观看免费高清完整版| 亚洲午夜色婷婷在线| 最近2019中文字幕大全第二页| 日本人成精品视频在线| 在线观看视频亚洲| 日韩精品中文字幕有码专区| 伊人久久大香线蕉av一区二区| 伊人亚洲福利一区二区三区| 欧美激情xxxx| 国产丝袜一区二区| 国产精品狼人色视频一区| 亚洲人成免费电影| 亚洲精品av在线| 国产精品自产拍在线观看| 亚洲精品v天堂中文字幕| 成人乱色短篇合集| 亚洲精品美女久久久| 日韩美女视频在线观看| 亚洲国产婷婷香蕉久久久久久| 欧美日韩亚洲国产一区| 日韩成人激情影院| 懂色av一区二区三区| 欧美专区在线播放| 精品成人av一区| 一区二区三区在线播放欧美| 国外成人免费在线播放| 国产一区二区三区网站| 欧美在线视频一二三| 美女国内精品自产拍在线播放| 91美女片黄在线观| 亚洲xxx大片| 精品国产91久久久久久| 91免费精品国偷自产在线| 自拍偷拍亚洲一区| 国产精品视频久久久| 97精品伊人久久久大香线蕉| 国产在线视频一区| 欧美成年人网站| 国产成人福利视频| 国产精品情侣自拍| 国产拍精品一二三| 91爱爱小视频k| 久久久久久综合网天天| 日韩精品中文字幕在线观看| 5252色成人免费视频| 亚洲精品久久久久中文字幕欢迎你| 国产精品爽爽ⅴa在线观看| 亚洲精品午夜精品| 国产成人精品网站| 亚洲iv一区二区三区| 日韩av网站大全| 国产精品美女呻吟| 色偷偷偷综合中文字幕;dd| 国产精品久久久久久亚洲影视| 久久免费视频在线观看| 91在线高清免费观看| 成人性生交大片免费观看嘿嘿视频| 精品久久久久久中文字幕大豆网| 亚洲福利视频二区|