精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

細話Java:帶你認識"失效"的private修飾符

開發 后端
在本文中,private表面上看上去失效了,但實際上是沒有的,而是在調用時通過間接的方法來獲取私有的屬性。

在Java編程中,使用private關鍵字修飾了某個成員,只有這個成員所在的類和這個類的方法可以使用,其他的類都無法訪問到這個private成員。

上面描述了private修飾符的基本職能,今天來研究一下private功能失效的情況。

Java內部類

在Java中相信很多人都用過內部類,Java允許在一個類里面定義另一個類,類里面的類就是內部類,也叫做嵌套類。一個簡單的內部類實現可以如下

  1. class OuterClass { 
  2.     class InnerClass{ 
  3.     } 

今天的問題和Java內部類相關,只涉及到部分和本文研究相關的內部類知識,具體關于Java內部類后續的文章會介紹。

***次失效?

一個我們在編程中經常用到的場景,就是在一個內部類里面訪問外部類的private成員變量或者方法,這是可以的。如下面的代碼實現。

  1. public class OuterClass { 
  2.   private String language = "en"
  3.   private String region = "US"
  4.  
  5.   public class InnerClass { 
  6.       public void printOuterClassPrivateFields() { 
  7.           String fields = "language=" + language + ";region=" + region; 
  8.           System.out.println(fields); 
  9.       } 
  10.   } 
  11.  
  12.   public static void main(String[] args) { 
  13.       OuterClass outer = new OuterClass(); 
  14.       OuterClass.InnerClass inner = outer.new InnerClass(); 
  15.       inner.printOuterClassPrivateFields(); 
  16.   } 

這是為什么呢,不是private修飾的成員只能被成員所述的類才能訪問么?難道private真的失效了么?

編譯器在搗鬼?

我們使用javap命令查看一下生成的兩個class文件

OuterClass的反編譯結果

  1. 15:30 $ javap -c  OuterClass 
  2. Compiled from "OuterClass.java" 
  3. public class OuterClass extends java.lang.Object{ 
  4. public OuterClass(); 
  5.   Code: 
  6.    0:  aload_0 
  7.    1:  invokespecial    #11//Method java/lang/Object."<init>":()V 
  8.    4:  aload_0 
  9.    5:  ldc  #13//String en 
  10.    7:  putfield #15//Field language:Ljava/lang/String; 
  11.    10: aload_0 
  12.    11: ldc  #17//String US 
  13.    13: putfield #19//Field region:Ljava/lang/String; 
  14.    16return 
  15.  
  16. public static void main(java.lang.String[]); 
  17.   Code: 
  18.    0:  new  #1//class OuterClass 
  19.    3:  dup 
  20.    4:  invokespecial    #27//Method "<init>":()V 
  21.    7:  astore_1 
  22.    8:  new  #28//class OuterClass$InnerClass 
  23.    11: dup 
  24.    12: aload_1 
  25.    13: dup 
  26.    14: invokevirtual    #30//Method java/lang/Object.getClass:()Ljava/lang/Class; 
  27.    17: pop 
  28.    18: invokespecial    #34//Method OuterClass$InnerClass."<init>":(LOuterClass;)V 
  29.    21: astore_2 
  30.    22: aload_2 
  31.    23: invokevirtual    #37//Method OuterClass$InnerClass.printOuterClassPrivateFields:()V 
  32.    26return 
  33.  
  34. static java.lang.String access$0(OuterClass); 
  35.   Code: 
  36.    0:  aload_0 
  37.    1:  getfield #15//Field language:Ljava/lang/String; 
  38.    4:  areturn 
  39.  
  40. static java.lang.String access$1(OuterClass); 
  41.   Code: 
  42.    0:  aload_0 
  43.    1:  getfield #19//Field region:Ljava/lang/String; 
  44.    4:  areturn 
  45.  

咦?不對,在OuterClass中我們并沒有定義這兩個方法

  1. static java.lang.String access$0(OuterClass); 
  2.   Code: 
  3.    0:  aload_0 
  4.    1:  getfield #15//Field language:Ljava/lang/String; 
  5.    4:  areturn 
  6.  
  7. static java.lang.String access$1(OuterClass); 
  8.   Code: 
  9.    0:  aload_0 
  10.    1:  getfield #19//Field region:Ljava/lang/String; 
  11.    4:  areturn 
  12.  

從給出來的注釋來看,access$0返回outerClass的language屬性;access$1返回outerClass的region屬性。并且這兩個方法都接受OuterClass的實例作為參數。這兩個方法為什么生成呢,有什么作用呢?我們看一下內部類的反編譯結果就知道了。

OuterClass$InnerClass的反編譯結果

  1. 15:37 $ javap -c OuterClass\$InnerClass 
  2. Compiled from "OuterClass.java" 
  3. public class OuterClass$InnerClass extends java.lang.Object{ 
  4. final OuterClass this$0
  5.  
  6. public OuterClass$InnerClass(OuterClass); 
  7.   Code: 
  8.    0:  aload_0 
  9.    1:  aload_1 
  10.    2:  putfield #10//Field this$0:LOuterClass; 
  11.    5:  aload_0 
  12.    6:  invokespecial    #12//Method java/lang/Object."<init>":()V 
  13.    9:  return 
  14.  
  15. public void printOuterClassPrivateFields(); 
  16.   Code: 
  17.    0:  new  #20//class java/lang/StringBuilder 
  18.    3:  dup 
  19.    4:  ldc  #22//String language= 
  20.    6:  invokespecial    #24//Method java/lang/StringBuilder."<init>":(Ljava/lang/String;)V 
  21.    9:  aload_0 
  22.    10: getfield #10//Field this$0:LOuterClass; 
  23.    13: invokestatic #27//Method OuterClass.access$0:(LOuterClass;)Ljava/lang/String; 
  24.    16: invokevirtual    #33//Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; 
  25.    19: ldc  #37//String ;region= 
  26.    21: invokevirtual    #33//Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; 
  27.    24: aload_0 
  28.    25: getfield #10//Field this$0:LOuterClass; 
  29.    28: invokestatic #39//Method OuterClass.access$1:(LOuterClass;)Ljava/lang/String; 
  30.    31: invokevirtual    #33//Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; 
  31.    34: invokevirtual    #42//Method java/lang/StringBuilder.toString:()Ljava/lang/String; 
  32.    37: astore_1 
  33.    38: getstatic    #46//Field java/lang/System.out:Ljava/io/PrintStream; 
  34.    41: aload_1 
  35.    42: invokevirtual    #52//Method java/io/PrintStream.println:(Ljava/lang/String;)V 
  36.    45return 

下面代碼調用access$0的代碼,其目的是得到OuterClass的language 私有屬性。

  1. 13:   invokestatic #27//Method OuterClass.access$0:(LOuterClass;)Ljava/lang/String; 

下面代碼調用了access$1的代碼,其目的是得到OutherClass的region 私有屬性。

  1. 28:   invokestatic #39//Method OuterClass.access$1:(LOuterClass;)Ljava/lang/String; 

注意:在內部類構造的時候,會將外部類的引用傳遞進來,并且作為內部類的一個屬性,所以內部類會持有一個其外部類的引用。
this$0就是內部類持有的外部類引用,通過構造方法傳遞引用并賦值。

  1. final OuterClass this$0
  2.  
  3. public OuterClass$InnerClass(OuterClass); 
  4.   Code: 
  5.    0:  aload_0 
  6.    1:  aload_1 
  7.    2:  putfield #10//Field this$0:LOuterClass; 
  8.    5:  aload_0 
  9.    6:  invokespecial    #12//Method java/lang/Object."<init>":()V 
  10.    9:  return 

小結

這部分private看上去失效可,實際上并沒有失效,因為當內部類調用外部類的私有屬性時,其真正的執行是調用了編譯器生成的屬性的靜態方法(即acess$0,access$1等)來獲取這些屬性值。這一切都是編譯器的特殊處理。

這次也失效?

如果說上面的寫法很常用,那么這樣的寫法是不是很少接觸,但是卻可以運行。

  1. public class AnotherOuterClass { 
  2.   public static void main(String[] args) { 
  3.       InnerClass inner = new AnotherOuterClass().new InnerClass(); 
  4.       System.out.println("InnerClass Filed = " + inner.x); 
  5.   } 
  6.  
  7.   class InnerClass { 
  8.       private int x = 10
  9.   } 
  10.  

和上面一樣,使用javap反編譯看一下。不過這次我們先看一下InnerClass的結果

  1. 16:03 $ javap -c AnotherOuterClass\$InnerClass 
  2. Compiled from "AnotherOuterClass.java" 
  3. class AnotherOuterClass$InnerClass extends java.lang.Object{ 
  4. final AnotherOuterClass this$0
  5.  
  6. AnotherOuterClass$InnerClass(AnotherOuterClass); 
  7.   Code: 
  8.    0:  aload_0 
  9.    1:  aload_1 
  10.    2:  putfield #12//Field this$0:LAnotherOuterClass; 
  11.    5:  aload_0 
  12.    6:  invokespecial    #14//Method java/lang/Object."<init>":()V 
  13.    9:  aload_0 
  14.    10: bipush   10 
  15.    12: putfield #17//Field x:I 
  16.    15return 
  17.  
  18. static int access$0(AnotherOuterClass$InnerClass); 
  19.   Code: 
  20.    0:  aload_0 
  21.    1:  getfield #17//Field x:I 
  22.    4:  ireturn 
  23.  

又出現了,編譯器又自動生成了一個獲取私有屬性的后門方法access$0一次來獲取x的值。

AnotherOuterClass.class的反編譯結果

  1. 16:08 $ javap -c AnotherOuterClass 
  2. Compiled from "AnotherOuterClass.java" 
  3. public class AnotherOuterClass extends java.lang.Object{ 
  4. public AnotherOuterClass(); 
  5.   Code: 
  6.    0:  aload_0 
  7.    1:  invokespecial    #8//Method java/lang/Object."<init>":()V 
  8.    4:  return 
  9.  
  10. public static void main(java.lang.String[]); 
  11.   Code: 
  12.    0:  new  #16//class AnotherOuterClass$InnerClass 
  13.    3:  dup 
  14.    4:  new  #1//class AnotherOuterClass 
  15.    7:  dup 
  16.    8:  invokespecial    #18//Method "<init>":()V 
  17.    11: dup 
  18.    12: invokevirtual    #19//Method java/lang/Object.getClass:()Ljava/lang/Class; 
  19.    15: pop 
  20.    16: invokespecial    #23//Method AnotherOuterClass$InnerClass."<init>":(LAnotherOuterClass;)V 
  21.    19: astore_1 
  22.    20: getstatic    #26//Field java/lang/System.out:Ljava/io/PrintStream; 
  23.    23new  #32//class java/lang/StringBuilder 
  24.    26: dup 
  25.    27: ldc  #34//String InnerClass Filed = 
  26.    29: invokespecial    #36//Method java/lang/StringBuilder."<init>":(Ljava/lang/String;)V 
  27.    32: aload_1 
  28.    33: invokestatic #39//Method AnotherOuterClass$InnerClass.access$0:(LAnotherOuterClass$InnerClass;)I 
  29.    36: invokevirtual    #43//Method java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder; 
  30.    39: invokevirtual    #47//Method java/lang/StringBuilder.toString:()Ljava/lang/String; 
  31.    42: invokevirtual    #51//Method java/io/PrintStream.println:(Ljava/lang/String;)V 
  32.    45return 
  33.  

其中這句調用就是外部類通過內部類的實例獲取私有屬性x的操作

  1. 33:   invokestatic #39//Method AnotherOuterClass$InnerClass.access$0:(LAnotherOuterClass$InnerClass;)I 

再來個總結

其中java官方文檔 有這樣一句話

if the member or constructor is declared private, then access is permitted if and only if it occurs within the body of the top level class (§7.6) that encloses the declaration of the member or constructor.

意思是 如果(內部類的)成員和構造方法設定成了私有修飾符,當且僅當其外部類訪問時是允許的。

如何讓內部類私有成員不被外部訪問

相信看完上面兩部分,你會覺得,內部類的私有成員想不被外部類訪問都很困難吧,誰讓編譯器“愛管閑事”呢,其實也是可以做到的。那就是使用匿名內部類。

由于mRunnable對象的類型為Runnable,而不是匿名內部類的類型(我們無法正常拿到),而Runanble中沒有x這個屬性,所以mRunnable.x是不被允許的。

  1. public class PrivateToOuter { 
  2.   Runnable mRunnable = new Runnable(){ 
  3.       private int x=10
  4.       @Override 
  5.       public void run() { 
  6.           System.out.println(x); 
  7.       } 
  8.   }; 
  9.  
  10.   public static void main(String[] args){ 
  11.       PrivateToOuter p = new PrivateToOuter(); 
  12.       //System.out.println("anonymous class private filed= "+ p.mRunnable.x); //not allowed 
  13.       p.mRunnable.run(); // allowed 
  14.   } 

***總結

在本文中,private表面上看上去失效了,但實際上是沒有的,而是在調用時通過間接的方法來獲取私有的屬性。

Java的內部類構造時持有對外部類的應用,C++不會,這一點和C++不一樣。

原文鏈接:http://droidyue.com/blog/2014/10/02/the-private-modifier-in-java/

 

責任編輯:張偉 來源: 技術小黑屋
相關推薦

2009-08-24 16:49:39

C#修飾符

2009-06-12 13:37:47

訪問權限修飾符Java教程

2009-06-12 14:46:05

static修飾符Java教程

2015-08-18 09:25:11

Java修飾符關鍵詞

2011-06-02 14:51:07

JAVA修飾符

2023-12-29 09:01:27

SwiftUI視圖修飾符

2025-08-15 11:10:54

2009-09-02 17:14:28

C#修飾符

2009-08-27 13:06:13

C# new修飾符

2009-08-27 11:04:08

C# extern修飾

2009-08-27 11:12:03

C# abstract

2009-08-21 13:58:06

C# virtual修

2009-09-02 17:04:35

C# Extern修飾

2009-06-19 10:51:39

Scalapackage訪問修飾符

2009-08-27 11:16:40

C# sealed修飾

2009-09-04 11:06:40

C#訪問修飾符

2021-08-02 12:33:26

Swift修飾符視圖

2011-06-28 09:29:11

C#修飾符

2010-01-11 18:46:15

VB.NET修飾符

2011-07-20 16:50:39

inlinec++
點贊
收藏

51CTO技術棧公眾號

av免费观看网址| 国产福利短视频| heyzo高清中文字幕在线| 成人福利视频网站| 国产激情久久久| 希岛爱理中文字幕| 日韩一级电影| 欧美精选午夜久久久乱码6080| 日韩不卡一二区| 三级理论午夜在线观看| 国产一区二区三区精品视频| 26uuu亚洲国产精品| 婷婷伊人五月天| 免费短视频成人日韩| 日韩一区二区麻豆国产| 日本成人在线免费视频| 欧美xxxx黑人又粗又长| 欧美国产97人人爽人人喊| 国产精品手机视频| 亚洲午夜激情视频| 亚洲欧美日本日韩| 色综合视频网站| 国产白丝一区二区三区| 日韩影视高清在线观看| 亚洲成人av在线| www.污污视频| 久久天堂av| 日韩欧美国产高清91| 亚洲精品国产系列| 手机看片1024日韩| 国产不卡在线一区| 成人a视频在线观看| 日韩不卡视频在线| 在线国产欧美| 欧美激情视频在线观看| 麻豆精品国产免费| 精品国产一区探花在线观看| 亚洲国产婷婷香蕉久久久久久 | 小草在线视频免费播放| 一区二区理论电影在线观看| 中文字幕一区二区三区精彩视频| 高清中文字幕一区二区三区| www久久久久| 玖玖视频精品| 精品久久久久av影院| 中文字幕在线视频精品| 欧美成人家庭影院| 色狠狠色狠狠综合| 那种视频在线观看| 精品国产免费人成网站| 色综合久久久久综合| 国产免费一区二区三区视频| 五月天av在线| 色婷婷精品久久二区二区蜜臀av | 99亚洲视频| 亚州国产精品久久久| 日韩免费观看一区二区| 99精品视频免费| 97国产精品人人爽人人做| 久久精品视频久久| 国产一区二区精品| 国产精品av网站| 中文字幕在线2019| 久久97超碰国产精品超碰| 91最新国产视频| 精品久久久久久亚洲综合网站 | 在线亚洲一区二区| 激情五月婷婷久久| 91丨精品丨国产| 日韩欧美电影一区| 精品人妻一区二区免费视频| 欧美日韩精品一区二区三区在线观看| 日韩精品极品视频免费观看| 色无极影院亚洲| 国产精品久久久久9999赢消| 欧美夫妻性生活xx| 日本一级片免费看| 日本亚洲一区二区| 亚洲va男人天堂| 欧美熟妇另类久久久久久不卡| 91美女在线视频| 亚洲精品乱码久久久久久蜜桃91| av在线免费网址| 精品久久久久久久久久久久久| 99蜜桃臀久久久欧美精品网站| 成人av集中营| 亚洲成人av中文字幕| 亚洲一区视频在线播放| 夜间精品视频| 全亚洲最色的网站在线观看| 91 中文字幕| av在线一区二区三区| 午夜精品区一区二区三| 超碰最新在线| 一本到不卡精品视频在线观看| 国产美女18xxxx免费视频| 国偷自产视频一区二区久| 在线电影av不卡网址| 久久国产一级片| 蜜桃视频免费观看一区| 韩国成人一区| 黄色小网站在线观看| 欧美日韩性视频| 久久艹这里只有精品| 九九亚洲视频| 久久久久久久一区二区| 一区二区 亚洲| 91美女片黄在线| 法国空姐在线观看免费| 成人在线视频播放| 日韩av网址在线观看| 伊人久久久久久久久久久久久久| 亚洲综合精品四区| 成人黄色片视频网站| 二区三区在线| 狠狠干狠狠久久| 亚洲熟妇一区二区| 国产精品成人一区二区不卡| 国产va免费精品高清在线| 黄色av免费观看| 亚洲美女视频一区| 欧美三级午夜理伦三级富婆| 香蕉国产成人午夜av影院| 久久99精品久久久久久琪琪| 亚洲天堂中文在线| 国产欧美精品一区二区色综合朱莉 | 粉嫩av一区二区夜夜嗨| 自拍av一区二区三区| 91香蕉视频污版| 国产探花在线精品| 欧美性在线观看| 涩涩视频免费看| 亚洲成国产人片在线观看| 69久久精品无码一区二区| 91亚洲国产| 国产欧美日韩91| 日本中文字幕电影在线免费观看| 日韩欧美主播在线| 玖玖爱在线观看| 欧美在线综合| 麻豆久久久9性大片| 亚洲第一av| 日韩激情在线视频| 午夜婷婷在线观看| 久久亚洲二区三区| 免费无码av片在线观看| 九九亚洲视频| 国产精品久久久久久久久久久久久 | 欧美最新精品| 国产香蕉97碰碰久久人人| 黄色污污网站在线观看| 国产婷婷一区二区| 国产又粗又长又大的视频| 日韩精品一区二区三区免费观影 | 欧美中文高清| 欧美不卡视频一区发布| jizz中国少妇| 亚洲国产精品久久艾草纯爱| 国产国语老龄妇女a片| 亚洲欧洲日本mm| 免费一区二区三区| 欧美aaa视频| 日韩在线免费视频观看| 精品国产av一区二区| 亚洲国产综合91精品麻豆| 亚洲熟女乱综合一区二区三区| 国产欧美高清| 日韩欧美99| 成人影院网站ww555久久精品| 久热精品在线视频| 欧美自拍第一页| 色综合久久中文字幕| 中文字幕第69页| 国产成a人亚洲精品| 人妻精品无码一区二区三区| 日韩免费特黄一二三区| 96久久精品| 范冰冰一级做a爰片久久毛片| 在线观看免费高清视频97| 99国产精品99| 狠狠色狠狠色综合日日五| 欧美午夜激情影院| 国产成人啪午夜精品网站男同| 日本一二三区视频在线| 一区二区三区视频免费观看| 91精品国产自产在线| www在线观看黄色| 在线观看久久久久久| 成人免费视频国产| 91久久精品一区二区三| 欧美卡一卡二卡三| 久久久美女毛片| 亚洲男人天堂2021| 免费久久99精品国产自在现线| 一本久道久久综合| 神马久久av| 亚洲xxxx3d| 国产第一精品| 97在线观看视频| 看黄网站在线| 亚洲欧美国产日韩中文字幕| 精品人妻无码一区二区| 欧美亚男人的天堂| 日本在线视频免费观看| |精品福利一区二区三区| 中文精品在线观看| 成人永久看片免费视频天堂| 在线观看免费成人av| 国产精品一二| 国产欧美久久久久| 99热在线成人| 任我爽在线视频精品一| 加勒比色老久久爱综合网| 成人性生交大片免费观看嘿嘿视频| 无遮挡在线观看| 国语自产精品视频在免费| 黄网站在线免费看| 中文字幕日韩电影| 国产专区在线| 日韩大陆欧美高清视频区| 精品人妻久久久久一区二区三区| 欧美视频精品在线观看| 最近免费中文字幕大全免费版视频| 亚洲曰韩产成在线| 日本一级二级视频| 国产精品理论片在线观看| 中文字幕第4页| 久久伊人蜜桃av一区二区| 99精品一区二区三区无码吞精| 国产一区高清在线| 第一区免费在线观看| 日韩电影在线一区| 日本熟妇人妻中出| 日韩高清不卡一区二区三区| 每日在线更新av| 一区二区动漫| 又粗又黑又大的吊av| 亚洲视频www| 99久久久无码国产精品6| 亚洲一区国产| 欧美日韩国产精品激情在线播放| 亚洲精品女人| 男人和女人啪啪网站| 在线综合欧美| 久久久久久久激情| 老鸭窝毛片一区二区三区| 欧美 国产 小说 另类| 久久久久网站| 五月天亚洲视频| 久久99精品久久久久| 日韩av片免费观看| 国产精品18久久久久久久久| 激情av中文字幕| 99在线热播精品免费| 李宗瑞91在线正在播放| 久久久精品国产免费观看同学| 自拍偷拍视频亚洲| 国产精品久久影院| 国产十六处破外女视频| 亚洲一区影音先锋| 特级做a爱片免费69| 色视频一区二区| 在线视频 中文字幕| 欧美一区二区三区日韩视频| 亚洲av无码一区二区乱子伦| 亚洲黄色av女优在线观看 | 久久亚洲精品国产精品紫薇| 国产中年熟女高潮大集合| 国产精品狼人久久影院观看方式| 三级av在线免费观看| 亚洲一区二区三区四区中文字幕| 日本三级欧美三级| 91国产视频在线观看| 国产精品久久久国产盗摄| 日韩欧美亚洲一区二区| 亚洲av成人无码网天堂| 尤物yw午夜国产精品视频| 国产精品久久麻豆| 91精品国产91久久久久久吃药 | 国产午夜精品福利视频| 亚洲免费观看高清在线观看| 日韩乱码一区二区| 欧美日韩成人综合在线一区二区| 精品国精品国产自在久不卡| 亚洲欧美精品一区二区| 国产在线1区| 茄子视频成人在线| 久久久久九九精品影院| 精品乱码一区| 911精品美国片911久久久 | 国产在线视频一区二区三区| 99re这里只有| 亚洲欧美一区二区视频| 国产精品第9页| 欧美丰满少妇xxxxx高潮对白| 熟妇人妻一区二区三区四区| 日韩中文在线中文网三级| 色戒汤唯在线| 97超碰人人模人人爽人人看| 精品久久电影| 少妇av一区二区三区无码| 久久精品国产99久久6| 成人无码www在线看免费| 日韩理论片在线| 亚洲大尺度在线观看| 亚洲第五色综合网| caopon在线免费视频| 国产精品久久久久av免费| 日韩aaa久久蜜桃av| 亚洲av综合色区| 另类小说欧美激情| 中文字幕国产专区| 性欧美疯狂xxxxbbbb| 国产男男gay体育生白袜| 在线观看国产精品日韩av| 亚洲美女久久精品| 狠狠色综合色区| 欧美日韩精品一本二本三本 | 成年人午夜久久久| 色欲人妻综合网| 欧美日韩国产经典色站一区二区三区| 色播色播色播色播色播在线| 欧美激情视频一区二区三区不卡| 精品一区二区三区在线观看视频| 婷婷久久青草热一区二区| 久久亚洲风情| 国产成人av一区二区三区不卡| 亚洲第一主播视频| 成人无码一区二区三区| 精品视频9999| 亚洲一区二区三区在线免费| 久久久一二三四| 久久精品av麻豆的观看方式| 性の欲びの女javhd| 91久久免费观看| 成人欧美一区| 国产精品亚洲美女av网站| av在线不卡顿| 日韩av片网站| 中文一区二区完整视频在线观看| 波多野结衣激情视频| 在线观看日韩欧美| 成人在线观看免费视频| 亚洲国产欧洲综合997久久| 美女mm1313爽爽久久久蜜臀| av片在线免费看| 欧美麻豆精品久久久久久| 国产调教视频在线观看| 亚洲自拍av在线| 欧美日本在线| 欧美日韩人妻精品一区在线| 午夜婷婷国产麻豆精品| 视频午夜在线| 国产91久久婷婷一区二区| 国产真实有声精品录音| 欧美成年人视频在线观看| 最近日韩中文字幕| 精品久久国产视频| 97成人在线视频| 九一精品国产| 亚洲一区日韩精品| ...xxx性欧美| 色网站免费观看| 国产91免费看片| 婷婷综合伊人| 亚洲色偷偷色噜噜狠狠99网| 欧美日韩午夜剧场| 在线视频91p| 国产精品免费一区二区三区观看| 亚洲国内欧美| 美国黑人一级大黄| 欧美一区二区三区在线视频| www.综合网.com| 欧美日韩成人一区二区三区| 老司机精品视频在线| 久久精品免费在线| 国产亚洲美女久久| 日韩av综合| 麻豆av免费在线| 亚洲少妇最新在线视频| 国产成人毛毛毛片| 日av在线播放中文不卡| 一区二区不卡| 国产精品无码久久久久一区二区| 制服丝袜av成人在线看| 免费成人在线电影| 一区二区三区视频在线播放| 成人av网站在线| 亚洲图片中文字幕| 91精品国产91久久久久久吃药 | 国模无码视频一区二区三区| 国产精品拍天天在线| 神马午夜精品95| 91久久精品一区| 亚洲制服少妇| 国产探花在线播放| 在线日韩欧美视频| 国产乱人伦精品一区| 8x8x成人免费视频| 色综合久久88色综合天天免费|