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

首頁 > 開發 > 綜合 > 正文

面向對象編程,我的思想[上]

2024-07-21 02:04:03
字體:
來源:轉載
供稿:網友
前言:

整理這份資料的目的是為了幫助我的同學能夠更直觀的理解面向對象的編程。讓后來者能夠少走一些彎路,但其中不免有許多漏洞及錯誤,也還請前輩提出寶貴的更改意見,畢竟交流會讓我們不斷的進步。

技術是日新月異的,他不會等待你的成長。技術要拿出來于別人交流,自己學是自己主觀意識上的理解,有對有錯!交流會讓進步變得更快。我認為如果計算機的體系結構不發生革命性的變化,我們現在所應用的程序語言也就百變不離奇蹤了!學編程學的是什么?思想!精通一門編程語言(最好是面向對象的語言)后再去搞其他的編程語言,你會發現過程是如此的行云流水!為什么?你已經把編程的思想掌握了,再去學其他的,無非是學習一種新的語法格式了。

我在這里并不是和你討論怎么去用C++或JAVA,也不是和你討論怎么去學他們,我要和你討論的是怎么去理解面向對象。其中主要會涉及到“類、對象、繼承、屬性、方法、靜態、重載、隱藏、重構、聲明、定義、初始化、賦值等”其中有許多相關技術我只會一代而過,讓你有一種到此一游的意味我就達到目的了,而更詳細的技術內幕,就請參考其他相關書籍而深入研究吧!因為我只是在和你探討如何去更好的理解面向對象!

如何去提高效率?重復使用資源,把別人的東西拿來就用。這是很不錯的主意!而對于你來說,最大的資源就是信心以及積極性!好,打起精神來,讓我們一同到面向對象的編程中去尋幽訪勝吧!

:文章中所有程序實例我都使用JAVA寫的,當然在C++中也就大同小異了了,不同的地方我會指出!

:文章中的正文文字用黑色,說明文字用粗體藍色,強調文字用粗體橙色,批改文字用粗體紅色!

正文:

1.基本概念:

1.1 類與對象的初探:

要我說,無論是面向過程的語言也好,面向對象的語言也罷,我首先要給他講的都是類和對象!--------“這個世界是由什么組成的?”這個問題如果讓不同的人來回答會得到不同的答案。如果是一個化學家,他也許會告訴你“還用問嘛?這個世界是由分子、原子、離子等等的化學物質組成的”。如果是一個畫家呢?他也許會告訴你,“這個世界是由不同的顏色所組成的”。……呵呵,眾說紛紜吧!但如果讓一個分類學家來考慮問題就有趣的多了,他會告訴你“這個世界是由不同類型的物與事所構成的”好!作為面向對象的程序員來說,我們要站在分類學家的角度去考慮問題!是的,這個世界是由動物、植物等組成的。動物又分為單細胞動物、多細胞動物、哺乳動物等等,哺乳動物又分為人、大象、老虎……就這樣的分下去了!

現在,站在抽象的角度,我們給“”下個定義吧!我的意思是,站在抽象的角度,你回答我“什么是人類?”首先讓我們來看看人類所具有的一些特征,這個特征包括屬性(一些參數,數值)以及方法(一些行為,他能干什么?。?。每個人都有身高、體重、年齡、血型等等一些屬性。人會勞動、人都會直立行走、人都會用自己的頭腦去創造工具等等這些方法!人之所以能區別于其它類型的動物,是因為每個人都具有人這個群體的屬性與方法?!?STRONG>人類”只是一個抽象的概念,它僅僅是一個概念,它是不存在的實體!但是所有具備“人類”這個群體的屬性與方法的對象都叫人!這個對象“”是實際存在的實體!每個人都是人這個群體的一個對象。老虎為什么不是人?因為它不具備人這個群體的屬性與方法,老虎不會直立行走,不會使用工具等等!所以說老虎不是人!

由此可見-------類是描述了一組有相同特性屬性和相同行為方法的對象。在程序中,類實際上就是數據類型!例如:整數,小數等等。整數也有一組特性和行為。面向過程的語言與面相對象的語言的區別就在于,面向過程的語言不允許程序員自己定義數據類型,而只能使用程序中內置的數據類型!而為了模擬真實世界,為了更好的解決問題,往往我們需要創建解決問題所必需的數據類型!面向對象編程為我們提供了解決方案。

1.2 內置數據類型與函數:

計算機程序在存儲數據時必須跟蹤3個基本屬性為:

1.  信息存儲在何處;

2.  存儲的值是多少;

3.  存儲的信息是什么類型的;

讓我們來看看編程語言的內置數據類型都有哪些?。?STRONG>呵呵,這個不大好說,因為每門語言都有自己獨特的數據類型,但這畢竟是少數,比如在JAVA中有byte類型的數據,而在C++中就沒有,希望你能舉一反三?。┍热缯麛怠眎nt ”,浮點類型的數據”float”!字符串”String”,以及數組還有結構體等等。然而在寫程序的時候,根據需要我們會創建一個類型的變量或常量,例如:由于我們需要創建一個整形的變量i為5,我們就可以這樣做,int i = 5;而根據需要我很有可能改變i的值,也就是從新給它賦值,比如讓它等與6,就可以在所需的地方改成i = 6;由此我們知道,在“值”上可以發生變化的量就叫變量。不會發生變化的量就叫做常量了,在C++中用count關鍵字來聲明,而在JAVA中則使用final關鍵字來聲明。由于不同語言的聲明格式不一樣,這里就不做一一介紹了,詳細的內容清查閱相關書籍!

在這里我們主要討論一下函數,我們可以把函數想象成一個“實現某種特定功能的黑匣子”-------這個功能是由你來設定的,舉個例子來說:現在我問你“2+3等于多少”?我相信你能很快的回答我等于5。讓我們來分析分析這句話包含什么信息!首先我要把你的大腦想象成是一個黑匣子,我并不知道也沒有必要知道你的大腦是如何工作的(也就是怎么運算的),我關心的只是我傳給你的是什么信息?你對信息做了哪些處理? 以及你返回給我的是什么信息?需要提醒你一下的是每個方法都會返回一個信息給調用者的,除了構造函數外稍候我會作詳細的介紹)。我現在需要把自己當作是一名程序員,而你呢?當然就是計算機了!計算即可沒有人那么聰明,它只會按事先約好的特定的格式運行,我想讓它具有如上所述的功能,我就要先定義這個黑匣子!首先我要告訴這個黑匣子會有兩個整數值給你(這就是所謂的參數,是程序員需要給黑匣子的信息),然后就要定義這個黑匣子內部實現這兩個整數相加的運算(這就是黑匣子對數據所做的加工,根據需要,你可以做任何的加工。)。最后再標注它返回給我一個同樣是整型的數值(這是黑匣子返回給程序員的信息)。一個函數就這樣定義完了,讓我們來看看書寫格式:

int addnum(int x,int y){

       return x+y;

}


具體的含義是這樣的:

int /*返回值類型*/ addnum /*方法(黑匣子)名稱*/ (int x,int y/*傳入的參數*/){

       return x+y; /*內部是想方法(實現相加運算,)并用return返回給調用者結果*/

}

首先請注意上明的“return”語句!return 關鍵字的含義是向調用者返回緊跟在它后面的信息!就像上面一樣,因為我問你,你才會回答我,如果我不問你,你就不用回答我的!在計算機中也一樣,定義好這個函數在哪里調用呢?我只能告訴你,哪里需要就在哪里調用!當然,你可以根據需要去更改參數、返回值以及內部實現,具體到如何定義如何調用你只好去參考相關的資料了!在這里我只是給你一個思想!

       有時你會遇到這樣的問題,我讓你記住,我的年齡是20歲!從字面上理解,你并沒有給我返回信息!然而事實上,你確實給我返回了信息,信息的內容是“無信息,也就是無返回值類型void”。具體的程序如下:

       int myAge = 0;

       int a=20;

void remAge(int a){

       myAge=a;

}


具體的函數說明如下:

int myAge =0;   //定義并初始化我的年齡為0;

int a=20; /*定義變量a等于20*/

void /*返回值類型為無返回值類型*/ remAge /*函數名稱*/(int a /*傳入的參數*/){

       myAge=a;  //內部實現方法,注意,沒有return返回?。。?BR>
}

關于函數的話題還有很多很多,這里就不一一介紹了,我的目的是讓你知道函數是怎么一會事兒!為下面的討論作鋪墊!

1.3 指針以及引用:

指針及引用是在C++中有的,JAVA中沒有。JAVA中取消了對內存的操作,隨之而來的事也取消了操作符重載的操作。不過在稍候我還是會介紹一些操作符重載的功能等。引用主要還是用在函數參數的傳遞上。所以我在這里就不做過多的介紹了。他們很實用,有興趣的同學可以參閱C++相關書籍。

1.4 運算符及控制語句:

還是自己看看相關書籍吧,這里就不再熬述了!

2.深入探討面向對象:

2.1“類型”的內部細節:

       有了上面的知識,我們現在就可以深入的挖掘類的內部實現了。所有的知識點我都會圍繞著類與對象展開,在此之前,我希望你能夠確信對以上所介紹的基本內容已完全掌握了!

       是的,面向對象的編程語言最大的特色就是可以編寫自己所需的數據類型,以更好的解決問題。我想我必須要幫你搞清楚“類,對象,屬性,方法它們之間的關系”!就像我前面所說的,人這個“類”是什么也做不了的,因為“人類”只是一個抽象的概念,它不是實實在在的“東西”,而這個“東西”就是所謂的對象。只有人這個“對象”才能去工作。而類呢?類是對象的描述!對象從類中產生出來!此時,對象具有類所描述的所有的屬性以及方法。-------一定要理解這句話?。?!

也許你已經有些不知所措了,沒關系!好好的回味一下,我再舉個例子!例如電視機,電視機都有工作原理圖,那么什么叫電視機呢?只要它能夠實現工作原理圖的所有功能的物體,我們都叫它電視機。你想想是不是這么一回事兒?可是,電視機原理圖是不能工作的,也就是這個原理圖不能收看節目,只有電視機這個“實體――即所謂的對象”才能收看節目,也就是說,從類生成出對象之后才算得上是真正的有意義!才能開始工作。此時,電視機擁有電視原理圖所描述的所有的屬性及方法!明白了吧,呵呵!

我先前介紹過,類是屬性與方法的集合。而這些屬性與方法可以被聲明為私有的(private),公共的(public)或是受保護(protected)的,他們描述了對類成員的訪問控制。下面我分別做一下介紹:

1.  公共的(public):把變量聲明為公共類型的之后,那么就可以通過對象來直接訪問,一切都是暴露無遺的!也就是說,你的信用卡密碼別人也能夠直接得到。

2.  私有的(private):如果把變量聲明為私有的情況就好多了,想要得到我的信用卡密碼,對象必須要調用專用的方法才能夠得到。

3.  受保護的(protected):介紹繼承時再討論。

4.  默認控制訪問符(friendly)://JAVA中有而C++中沒有。

為了實現數據的封裝,提高數據的安全性,我們一般會把類的屬性聲明為私有的,而把類的方法聲明為公共的。這樣,對象能夠直接調用類中定義的所有方法,當對象想要修改或得到自己的屬性的時候就必須要調用以定義好的專用的方法才能夠實現。你想想,你會把你的信用卡密碼公布出來嘛?呵呵!所以,我們提倡的是:“對象調方法,方法改屬性”;

2.2通過實例看內存分配:

說了這么多,讓我們來看一個實例吧!比如:現在我們要編寫某家公司員工管理系統,你認為最合適的數據類型是什么?我認為是員工個人!但是在面向過程的語言中,這樣做是不允許的,因為它只能使用語言中的內部數據類型!而員工不在這個內部數據類型之內!也許有人會說可以用C語言中的struct,好注意!畢竟它是類的基礎!如果你以前是一名面C或B的程序員,請你忘掉這些,讓我們一起看看如何用類來實現這一切吧!

       某家公司的員工是人類的一個特殊群體,它除了具備人類的所有特性與方法外,它還有額外的特性與方法,比如她有她的工資、信用卡密碼、作息時間等等,這些特性以及工作內容,工作量等等這些方法。而在計算機中我們該如何定義這個類呢?下面我將寫出它的格式,讓你看看在計算機中它是張什么樣子的!

       /*在此我需要再次聲明的是,我用的是JAVA格式,在語法格式上它與C++大不相同!許多細節以及內部操作都有諸多區別,而在思想上確實大同小異的*/

       //employee.java

public class employee{

       private String name;       //員工姓名

       private int age;           //員工年齡

       private char sex;          //員工性別

       private float emolument;   //員工薪水

private boolean lunch;     //員工午餐

                              //……等等

public void heater(){              //這個方法是用來加工員工的午餐

              lunch = true;

}


public void setName(String a){      //這個方法是修改員工的姓名

              name= a;

}

public String getName(){           //這個方法是得到員工的姓名

       return name;

}

//……等等

}

這樣我們就定義完了我們所需要的數據類型?,F在,讓我們來看看它能夠干什么以及怎么工作!

我想要做的是,工作室里有一個光桿司令叫“jingwei”,我修改它的名字后對對它進行輸出,看看我是怎么做的吧!

注意:請仔細觀察對象是如何調用方法的,它使用了“.”操作符!事實上是這樣的,對象調用公共的屬性或方法時就會使用“.”操作符。

然而在C++中,如果定義一個同類型的指針,該指針調用此對象的方法時,就會使用“->”操作符。更詳細的內容清參閱相關書籍了!

 

//workstation.java

       import java.awt.Graphics;

import java.applet.Applet;

       public class workstation extends Applet{

              private employee jingwei ;      //對象的聲明,此時并不分配內存!

              public void init(){

                     jingwei = new employee();  /*此時創建對象會調用構造函數,稍候介紹*/

                     jingwei.setName(“jw”);        //設置我的名字


              }

              public void paint(Graphics g){

                     g.drawString("my name is "+jingwei.getName(),10,10);//顯示我的名字

       }

}

輸出結果是:

       my name is jw

這串字符串是在輸出窗口的x坐標軸為10 px  ,  y坐標軸為10 px的位置。

我現在要做的是,把上面的程序做個大解剖,讓你能夠看清楚它到底是怎么一回事兒!(我可不時帶你去看里面的匯編,呵呵,那個我也不會:)

       首先還是來看看我們自定義的數據類型employee,在應用的時候它和int類型的數據沒什么兩樣,一樣的需要創建變量(對象),只不過前者是咱自己定義的,而后這是它內置的。Employee這個類中有許多屬性,也有許多方法。而此時,我們不能直接用我們所創建出來的對象調用它的屬性進行修改。因為它是private受保護類型的!我要想修改我的姓名我就要用對象調用setName()這個方法,而我想得到我的姓名就要調用getName()這個方法。我們完全是按照航線來行走的,這個航線就是“對象調方法,方法改屬性

       好的,我真的相信你已經明白了這是怎么一回事兒了!呵呵!仰起航帆,繼續前行!

       現在讓我們一起來看看workstation這個類。這是個主類,和C++中的main()函數的味道差不多。其中,在JAVA中,一個文件只允許有而且必須有一個主類,這個主類用public來聲明!他就跟C++中必須要有一個main()函數是一樣的。

讓我們來看看這個類中的第一條語句!private employee jingwei ;這條語句的作用是聲明一個employee的對象jingwei(在C++中就不用聲明了)。我想要和你說的是“聲明”與“定義”之間的區別。聲明只是告訴計算機將要有這樣的一個變量(對象),在內存中它并不為這個變量(對象)分配內存!而只有在定義的時候才會給這個變量(對象)分配內存。(需要說明一下的是init()方法是完成初始化操作的,在此處定義對象,為對象分配內存。start()方法用來啟動瀏覽器的主線程,paint()方法來顯示Apple的界面。這些是Applet程序所需的,至于Application程序就不需要了,當然了,C++中也不需要他們。關于他們的詳細內容清參閱相關書籍

緊接著就開始定一個對象了,對jingwei這個對象進行操作才會有實際的意義。千萬不要有這種想法:“試圖對類進行操作!”就像前面我說的,電視機原理不能看電視一樣!這是毫無意義的!看這條語句jingwei = new employee();它的意思就是定義一個employee類型的對象jingwei。此時,我想告訴你的是:“jingwei這個對想擁有了些什么”。它擁有了類所描述的所有的屬性及方法。下面我一一給你列出來:

/*所有的employee對象都擁有這些屬性。每創建一個對象就會從新分配一塊內存來存放相應對象的這些屬性。我的意思是每個對象都有自己“獨特”的一份*/

private String name;       //員工姓名

       private int age;           //員工年齡

       private char sex;          //員工性別

       private float emolument;    //員工薪水

private boolean lunch;      //員工午餐

/*所有的employee對象都擁有這些方法。但在內存中只有一份*/

public void heater(){              //這個方法是用來加工員工的午餐

       lunch = true;

}

public void setName(String a){      //這個方法是修改員工的姓名

       name= a;

}

public String getName(){           //這個方法是得到員工的姓名

       return name;

}

/*但是,實際上在創建jingwei這個對象時計算機只給這個對象的所有的屬性分配了內存,而并沒有給方法分配內存。方法只有一個,是屬于所有的對象的,所以無論創建了多少個對象,計算機只會為一個方法分配一塊內存。*/ 

       我想我還是舉個例子吧,不然你非暈倒不可。呵呵!

       看我這條語句“private boolean lunch;”公司不管午餐,每個員工都需要帶飯。我們現在這樣想,公司的空間是所有的內存容量,你的辦公桌就是計算機中的內存中的一部分(每個員工都有一份,是在創建對象時分配的)。你把午飯帶到了公司,放在了你的辦公桌上?!拔顼垺闭紦四愕霓k公桌的一角(占了你自己“對象”的一塊內存容量)。這份午飯只屬于你自己,同樣別人的也只屬于她自己!所以每個員工(對象)都需要一快空間(內存)來存放自己的午餐(屬性)。在計算機中也是這樣的,每創建一個對象,就會在內存中從新分配一塊內存來放“午餐――lunch”這個屬性(對象所擁有的所有的屬性)。計算機只會為對象的屬性分配內存。因為每個對象的都不一樣!就像你往公司帶的午飯和我往公司帶的午飯不一樣是一個道理!但方法就不同了。早晨帶的飯中午就涼了,你需要用微波爐來加熱。微波爐可不用你帶,公司就有(只占公司的一塊空間),它放在了午餐桌上。你想想,微波爐屬于誰的?它屬于所有員工的!因為每個員工都可以用它。而不必每個員工都帶一份。由此可見,每個員工(對象)都有一份午飯(屬性),但所有的員工(對象)只一個微波爐(方法)。所有的員工(對象)都可以通過這個微波爐(方法)來改變自己午餐(屬性)的冷熱狀態。殊途同歸!在計算機中也就是這樣,方法只有一份,供所有的對象使用!而屬性是每個對象一份,因為每個對象的都不一樣。別和我說你還不明白,不然我會撞墻的,呵呵:)
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久99免费视频| 日韩av在线看| 欧美影院成年免费版| 欧美理论片在线观看| 久久露脸国产精品| 成人在线播放av| 亚洲一区二区三区毛片| 成人淫片在线看| 91美女片黄在线观| 日韩中文字幕网| 久久6免费高清热精品| 亚洲国产精品久久久久久| 亚洲欧美成人一区二区在线电影| 国产69精品久久久久9| 一个人看的www欧美| 欧美剧在线观看| 亚洲最新av在线网站| 欧美高清在线视频观看不卡| 国产精品视频免费在线观看| 5278欧美一区二区三区| 成人高清视频观看www| 亚洲精品欧美极品| 久久夜色精品国产亚洲aⅴ| 日韩国产欧美精品一区二区三区| 亚洲最大福利视频| 国产精品久久精品| 91夜夜未满十八勿入爽爽影院| 亚洲欧美999| 国产成人极品视频| 中文字幕日韩在线视频| 久久男人资源视频| 亚洲最大的成人网| 精品久久久久久中文字幕一区奶水| 亚洲欧美中文另类| 国产视频欧美视频| 97久久精品人人澡人人爽缅北| 成人女保姆的销魂服务| 91热精品视频| 亚洲另类欧美自拍| 九九热这里只有精品免费看| 成人有码视频在线播放| xxx欧美精品| 欧美日本高清视频| 成人网在线观看| 这里只有精品久久| 欧美日韩性视频| 亚洲国产婷婷香蕉久久久久久| 欧美xxxx14xxxxx性爽| 韩剧1988免费观看全集| 九九热最新视频//这里只有精品| 亚洲精品98久久久久久中文字幕| 成人福利网站在线观看11| 国产精品第100页| 日韩欧美亚洲范冰冰与中字| 韩国视频理论视频久久| www.99久久热国产日韩欧美.com| 欧美成人精品一区二区三区| 亚洲性69xxxbbb| 欧美精品videofree1080p| 国产精品扒开腿做爽爽爽视频| 亚洲一区免费网站| 国产精品免费福利| 国产999精品视频| 欧美一级淫片播放口| 欧美肥老妇视频| 久久九九国产精品怡红院| 国内精品视频在线| 欧美视频不卡中文| 国产精品成av人在线视午夜片| 日本不卡视频在线播放| 日av在线播放中文不卡| 国模视频一区二区三区| 久久综合网hezyo| 久久夜色精品国产欧美乱| 久久全球大尺度高清视频| 91av在线网站| 精品久久久91| 少妇高潮久久77777| 热re99久久精品国产66热| 亚洲最大成人在线| 日韩视频中文字幕| 亚洲欧美日韩精品| 91wwwcom在线观看| 精品中文字幕久久久久久| 午夜精品久久久久久久久久久久久| 亚洲日本欧美日韩高观看| 久久精品中文字幕免费mv| 国产欧美在线看| 欧美激情久久久久| 2019中文字幕全在线观看| 国产精品欧美久久久| 亚洲欧美国产精品| 另类天堂视频在线观看| 91九色单男在线观看| 久久久国产视频91| 久久久久久一区二区三区| 久久亚洲电影天堂| 日韩精品免费视频| 国产日韩在线观看av| 中文字幕亚洲情99在线| 亚洲嫩模很污视频| 美日韩精品视频免费看| 亚洲欧美日韩国产精品| 国产精品揄拍500视频| 国产精品一区二区在线| 久久免费视频观看| 成人写真视频福利网| 国产一区二区日韩精品欧美精品| 久久欧美在线电影| 欧美激情精品久久久久久| 欧美日韩国产精品一区| 97精品国产97久久久久久| 日韩网站免费观看高清| 久久久久女教师免费一区| 国产精品成人播放| www.亚洲一二| 日韩av在线免费看| 26uuu另类亚洲欧美日本一| 午夜精品福利视频| 77777少妇光屁股久久一区| 亚洲电影天堂av| 91九色单男在线观看| 亚洲欧美三级在线| 亚洲午夜小视频| 亚洲美女动态图120秒| 亚洲国产精品va| 亚洲精品国产精品国自产在线| 日韩一区二区久久久| 91高清视频免费观看| 成人激情在线播放| 亚洲日本欧美中文幕| 久久国产精品偷| 欧美夫妻性生活视频| 在线亚洲国产精品网| 国产美女精品免费电影| 97视频免费在线看| 国产精品爱啪在线线免费观看| 日韩在线视频二区| 91性高湖久久久久久久久_久久99| 久久视频国产精品免费视频在线| 中文国产亚洲喷潮| 亚洲mm色国产网站| 国产精品第3页| 欧美激情精品久久久久久久变态| 美女视频久久黄| 欧美第一页在线| 亚洲精品日韩在线| 北条麻妃一区二区在线观看| 久久久久久久久爱| 欧美日韩国产激情| 亚洲精品欧美日韩专区| 啊v视频在线一区二区三区| 久久久久久亚洲| 91在线免费观看网站| 国产精品久久久久7777婷婷| 亚洲国产精品va在线观看黑人| 国产精品久久久91| 欧美日韩一区二区免费视频| 少妇久久久久久| 国产精品精品久久久久久| 亚洲第一级黄色片| 成人观看高清在线观看免费| 成人激情在线播放| 92看片淫黄大片欧美看国产片|