JAVA编程基础-面向对象高级特性_第1页
JAVA编程基础-面向对象高级特性_第2页
JAVA编程基础-面向对象高级特性_第3页
JAVA编程基础-面向对象高级特性_第4页
JAVA编程基础-面向对象高级特性_第5页
已阅读5页,还剩107页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、JAVA编程基础 面向对象高级特性3 Sept. 2008 Neusoft Confidential第六章 面向对象高级特性目标:介绍Java中类的继承,封装,多态,方法的覆盖,抽象类、接口及内部类等面向对象的高级特性。通过本课的学习,学员应该掌握如下知识:1)类的继承、封装、多态2)抽象类及接口3)引用数据类型的转换4)访问权限修饰符的使用5)final关键字教学方法:讲授ppt上机练习本章要点类的继承继承的规则子类的构造器Java中的包和访问修饰符方法的覆盖引用数据类型的转换向下转型向上转型多态特征动态绑定抽象类和接口定义抽象方法区别Final关键字内部类Contents12345类的继承

2、Java包的概念访问权限修饰符方法的覆盖引用类型的转换类的继承类的继承在Java中定义一个类时,让该类通过关键字extends继承一个已有的类,这就是类的继承(泛化)。被继承的类称为父类(超类,基类),新的类称为子类(派生类)。子类继承父类的所有属性和方法,同时也可以增加自己的属性和方法。使用继承继承的语法和规则继承的语法示例Employee.javaWorker.java修饰符 class 子类名 extends 父类名继承的语法和规则继承的语法 练习 Officer.javaTestOfficer.java用 java中类的继承机制,实现 Officer类,并设计一个测试程序TestOff

3、icer类,来访问Officer类继承的好处使编码更高效易维护代码的重用继承的语法和规则继承的规则Java中只支持单继承,也就是说每个类只能有一个父类,不允许有多重继承一个父类可以有多个子类子类继承父类所有的属性和方法子类实例化的过程子类实例化时先实例化其父类,然后实例化子类。要先调用父类的构造器,父类构造器运行完毕,才调用子类的构造器。如果实例化类D,说出构造器执行的顺序。ABD示例 SubClassConstruct.javaCEsuper和this关键字super() 作用:调用父类的构造器 只能出现在子类的构造器中,且必须是第一行 super()中的参数,决定了调用父类哪个构造器 如果

4、子类构造器中没有出现super,那么编译器会默认加上super(),即调用父类的空构造器,如果父类没有空构造器,编译器提示错误。super和this关键字this() 作用:调用本类的构造器 只能写在构造器的第一行在同一个构造器中super()和this()不能同时出现示例 Person.java、Student3.java、Student4.java子类的构造器子类的构造器 子类不能继承父类的构造器在子类中创建构造器时,必须调用父类的构造器子类可以在自己的构造器中使用super关键字来调用父类的构造器super (参数1,参数2,);如果使用super关键字调用父类构造器,必须写在该子类构造

5、器的第一行如调用的是父类中无参的构造器,则可以不写super( )如果子类中调用了父类无参的构造器,而父类中没有无参构造器则系统编译出错super和this关键字super. 指向父类的引用。this. 指向本类的引用。类的继承给定以下代码:下列描述哪些是正确的_?A. 编译失败C. 在第7行抛出异常B. 代码正常运行D. 在第2行抛出异常答案:AContents12345类的继承Java包的概念访问权限修饰符方法的覆盖引用类型的转换Java中的包包的概念及应用在Java中,包主要有以下用途 :有助于避免命名冲突包允许在更广的范围内保护类、数据和方法包可以是类、接口和子包的集合Java中的包包

6、的概念及应用将类放入包中package 包名 ;注意:package语句作为java源文件的第一条语句每个源文件只能声明一个包如果没有package语句,则默认为无名包Java中常用的包java.lang Java语言包,任何程序中,该包都被自动导入。java.awt 图形用户界面包。java.awt.event 图形用户界面事件处理包。java.swing 跨平台轻量级组件包。Java中常用的包java.sql 数据库访问包。java.io 这个包由对您的输入/输出操作有用的类组成。java.util 该包提供了许多创建如:lists, calendar, date等所需要的类和接口。 该包

7、提供了许多进行TCP/IP网络编程的类和接口。import导入包中的类访问其它包中的类包名.类名package test;class Cat extends p08.Animal使用import关键字引入其它包中的类package test;import p08.Animal;class Cat extends Animal位于同一包中的类可以直接访问import导入包中的类访问其他包中的类导入包中所有的类import 包名.*;导入子包中所有的类import 包名.子包名.*;导入包中的某个类import 包名.子包名.类名;Contents12345类的继承Java包的概念访问权限修饰符方

8、法的覆盖引用类型的转换封装信息隐藏,隐藏对象的实现细节,不让用户看到将东西包装在一起,然后以新的完整形式呈现出来 将方法和属性一起包装到一个单元中,单元以类的形式实现“隐藏属性、方法或实现细节的过程称为封装。”封装封装的目的隐藏类的实现细节让使用者只能通过事先定制好的方法来访问数据,可以方便地加入控制逻辑,限制对属性的不合理操作便于修改,增强代码的可维护性可进行数据检查示例Employor.javaTestEmployer.java访问权限修饰符访问权限修饰符访问权限修饰符访问权限修饰符用来控制类的成员和类的使用范围类成员的访问权限修饰符:private、default、protected、p

9、ublic类的访问权限修饰符:public、defaultprivatedefaultprotectedpublic同一类同一包中的类不同包中的子类其他包中的类示例:Access.java TestAccess.java访问权限修饰符 练习给定以下代码:下列选项正确的是?A. 编译失败B. 成功编译并执行C. 编译成功,但运行时在ClassTest.java的第5行抛出异常D.编译成功,但运行时在ClassTest.java的第6行抛出异常答案:AContents12345类的继承Java包的概念访问权限修饰符方法的覆盖引用类型的转换方法的覆盖方法的覆盖(override)重写(rewrite

10、)对从父类中继承来的方法进行改造在子类继承父类时发生方法覆盖的规则在子类中的覆盖方法与父类中被覆盖的方法应具有相同的方法名相同的参数列表(参数数量、参数类型、参数顺序都要相同)相同的返回值类型子类覆盖方法的访问权限要不小于父类中被覆盖方法的访问权限示例Worker.java方法的覆盖 练习给定下列代码:当在第6行加入什么方法时会引起编译错误?答案:B方法的覆盖 练习给定类class A int method1(int a, double b) return 0; ,在其子类中下列哪些覆盖方法可以正确的声明_A. int method1(int a, double b) return 1; B.

11、 int method1(int a, long b) return 1; C. int method1(int b,double a)return 1;D. short method1(int a, double b) return 1: E. int method1(double b, int a) return 1; 答案:A CContents12345类的继承Java包的概念访问权限修饰符方法的覆盖引用类型的转换上溯造型引用数据类型的转换(对象造型)示例: Upcasting.java向上转型(Upcasting) 子类转换为父类,自动转换;前提 具有继承或实现关系向上转换损失了子类

12、新扩展的属性和方法仅可以使用从父类中继承的属性和方法下溯造型从父类引用转换为子类引用向下转型的原则:强制转换只有曾经做过向上转型的对象,才能再向下转型,否则会发生运行期异常。示例: DownCasting植物生物动物Animal a = new Cat( );Cat c = (Cat)a;人类猫类向下转型instanceof 运算符instanceof 运算符判断一个类是否实现了某个接口对象 instanceof 接口判断一个实例对象是否属于一个类对象 instanceof 类它的返回值是boolean型的示例InstanceofDemo.javaContents678910多态抽象类接口fi

13、nal关键字内部类多态多态(polymorphism)也叫动态绑定、池绑定,指多种表现形态.动态绑定:指在运行的时候,根据句柄实际指向的类型来决定调用哪一个,相同类型的变量调用相同的方法,执行的具体代码却不同。在执行期间(而非编译期间)判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。多态最大限度的增加了程序的可扩展性。分为两种表现形式 赋值多态 传参多态(隐式的赋值多态)示例fuzhi.java、chuancan.java37多态多态的存在有三个必要条件: 要有继承 要有重写 父类引用指向子类对象38多态练习在停车场收费系统中,收费者会根据车型的不同收取不同的停车费。客车:15元/

14、小时;卡车:12元/小时;轿车:8元/小时;摩托车:3元/小时。编写程序完成此功能39Contents678910多态抽象类接口final关键字内部类抽象类抽象类抽象类是抽象方法和非抽象方法的集合访问权限修饰符 abstract class 类名 特殊情况全部是抽象方法全部为非抽象方法abtract class A String name;abstract int method1(int a, int b);void sayHi( )System.out.println(“Hello!”);抽象方法抽象方法只有方法声明,没有方法实现的方法访问权限修饰符 abstract 返回值类型abstra

15、ct class A abstract int method1(int a, int b);抽象方法名 (参数列表) ;抽象类的规则抽象类注意:抽象类不能被实例化;其包含的抽象方法必须在其子类中被实现,否则该子类只能声明为abstract;抽象方法不能为static;在下列情况下,一个类必须声明为抽象类:当一个类的一个或多个方法是抽象方法时;当类是一个抽象类的子类,并且没有实现父类的所有抽象方法,即只实现部分;当一个类实现一个接口,并且不能为全部抽象方法都提供实现时;抽象类 练习给定以下代码:执行下列哪些操作后,可以让代码通过编译?A.B.C.D.对methodA方法添加方法体将57行,用“;

16、”代替删除class前的abstract关键字删除methodA方法前的abstract关键字E.删除methodB方法前的abstract关键字答案:BEContents678910多态抽象类接口final关键字内部类接口interface接口是常量和抽象方法的集合,包含常量和方法的定义,而没有方法的实现,也没有构造函数。接口不是一个类,不能实例化;JJava只支持单继承,但可以用接口来实现现实中多继承的现象。接口可以使方法的定义和实现相分离,降低模块之间或系统间的耦合性。定义格式如下:public interface Student int age = 16;void study();46

17、类实现接口接口必须通过类来实现它的抽象方法,类实现接口的关键字为implements。如果一个类要实现一个接口,那么这个类就必须实现接口中所有抽象方法,否则这个类只能声明为抽象类。格式如下:public class MyClass implements Student/实现接口中所有抽象方法47接口的特点接口使用interface关键字来定义,而不是class。接口中没有自己的构造函数,接口中定义的方法全部都是抽象方法,即只提供方法的定义,而没有提供方法的具体实现的语句,并且是public的。接口中定义的变量都是公共静态最终变量(public static final)。接口采用多继承机制(也

18、就是一个类可以实现多个接口,一个类可以实现多继承了) ,而不像类一样采用单继承机制。多个无关的类可以实现同一个接口接口可以继承其它的接口,并添加新的属性和抽象方法。接口默认: 常量:public static final 抽象方法: public abstract48接 口(interface) 练习给定以下代码:下列选项中,哪些选项可以用来替代第2行代码?A. final int k = 4;B.C.public int k =4;static int k = 4;D. private int k = 4;E.abstract int k = 4;答案:ABC接 口(interface) 练

19、习下列选项中,哪些可以定义在一个接口中?答案:AB接口与抽象类的区别接口不能含有任何非抽象方法,而抽象类可以。类可以实现许多接口,但只能有一个父类。接口不是类分级结构的一部分,没有联系的类可以实现相同的接口。51类的继承class A extends B class A implements C, D class Bextendsclass Ainterface Cimplementsclass Aclass A extends B implements C, D interface Dimplementsclass Bextendsinterface Cimplementsinterface

20、 Dimplementsclass A52抽象类的继承class A extends B abstract class A implements C, D abstract class Bextendsclass Ainterface Cimplementsabstract class ainterface Dimplementsabstract class A extends B implements C, D abstract class Bextendsinterface Cimplementsinterface Dimplementsabstract class A53接口的继承int

21、erface A extends B, C, D interface Bextendsinterface Cextendsinterface Dextendsinterface A54访问接口中常量public static final int MAX_SPEED=100;有三种方式: 对象名.MAX_SPEED 类名. MAX_SPEED 接口名. MAX_SPEED55接口练习编写代码,实现下面的结构,在主函数中调用Person对象的think方法,调用Dog对象的call方法,调用Animal接口的run方法。Animalrun()eat()Persont hink()Dogcall()

22、56Contents678910多态抽象类接口final关键字内部类final关键字final关键字final可以修饰的元素:类:不能被继承变量(属性和局部变量):不能被重新赋值 在声明时赋值,或在构造器中赋值 系统不会对final属性默认的赋初始值方法:不能在子类中被覆盖,即不能修改。示例 FinalTest.javaContents678910多态抽象类接口final关键字内部类内部类内部类(嵌套类)内部类就是定义在另一个类内部的类。内部类对于同一包中的其它类来说,内部类能够隐藏起来。注意内部类可以访问其外部类中所有的属性和方法无需创建外部类的对象,即可从内部类访问外部类的变量和方法。必须

23、创建内部类的对象,否则无法从外部类访问内部类的变量和方法。如果内部类中有和外部类同名的变量或方法,则内部类的变量和方法将获得比外部类的变量和方法更高的优先级。不能定义static变量内部类类中定义的内部类public class Outerprivate int varOuter=100;class Innerint varInner=200;public void showOuter()System.out.println(varOuter); /是否能够输出?public void showInner()Inner i=new Inner();System.out.println(i.va

24、rInner);内部类类中定义的内部类普通类的访问权限修饰符defaultpublic内部类的访问权限修饰符defaultpublicprotectedprivate内部类内部类的访问在Outer内访问Inner,只需如下:Inner in = new Inner() ;在Outer外访问Inner,必须如下:Outer o = new Outer(); /实例化外部类Outer.Inner oi = o.new Inner(); /实例化内部类静态内部类用static标识的内部类为静态内部类。静态内部类作为外部类的静态成员,不能访问外部类非静态成员。非静态内部类只能定义非静态成员,而静态内部

25、类可以定义静态成员和非静态成员。使用Outer.Inner inn=new Outer.Inner()方式实例化静态内部类。非静态内部类不可以使用上面的方式实例化。示例:OuterStatic.java局部内部类局部内部类在一个类的方法体中或程序块内定义的内部类class Aint a;局部内部类public void method()class B class Aint a;public void method( int c )int b=0;class B 类中定义的内部类小结类的继承子类的构造器Java中的包和访问修饰符方法的覆盖引用数据类型的转换向下转型向上转型多态特征动态绑定抽象类和

26、接口定义抽象方法区别Final关键字内部类原文已完。下文为附加文档,如不需要,下载后可以编辑删除,谢谢!施工组织设计本施工组织设计是本着“一流的质量、一流的工期、科学管理”来进行编制的。编制时,我公司技术发展部、质检科以及项目部经过精心研究、合理组织、充分利用先进工艺,特制定本施工组织设计。一、 工程概况:西夏建材城生活区27#、30#住宅楼位于银川市新市区,橡胶厂对面。本工程由宁夏燕宝房地产开发有限公司开发,银川市规划建筑设计院设计。本工程耐火等级二级,屋面防水等级三级,地震防烈度为8度,设计使用年限50年。本工程建筑面积:27#楼3824.75m2;30#楼3824.75 m2。室内地坪0

27、.00以绝对标高1110.5 m为准,总长27#楼47.28m;30#楼47.28 m。总宽27#楼14.26m;30#楼14.26 m。设计室外地坪至檐口高度18.6 00m,呈长方形布置,东西向,三个单元。本工程设计屋面为坡屋面防水采用防水涂料。外墙水泥砂浆抹面,外刷浅灰色墙漆。内墙面除卫生间200300瓷砖,高到顶外,其余均水泥砂桨罩面,刮二遍腻子;楼梯间内墙采用50厚胶粉聚苯颗粒保温。地面除卫生间200200防滑地砖,楼梯间50厚细石砼1:1水泥砂浆压光外,其余均采用50厚豆石砼毛地面。楼梯间单元门采用楼宇对讲门,卧室门、卫生间门采用木门,进户门采用保温防盗门。本工程窗均采用塑钢单框双

28、玻窗,开启窗均加纱扇。本工程设计为节能型住宅,外墙均贴保温板。本工程设计为砖混结构,共六层。基础采用C30钢筋砼条形基础,上砌MU30毛石基础,砂浆采用M10水泥砂浆。一、二、三、四层墙体采用M10混合砂浆砌筑MU15多孔砖;五层以上采用M7.5混合砂浆砌筑MU15多孔砖。本工程结构中使用主要材料:钢材:I级钢,II级钢;砼:基础垫层C10,基础底板、地圈梁、基础构造柱均采用C30,其余均C20。本工程设计给水管采用PPR塑料管,热熔连接;排水管采用UPVC硬聚氯乙烯管,粘接;给水管道安装除立管及安装IC卡水表的管段明设计外,其余均暗设。本工程设计采暖为钢制高频焊翅片管散热器。本工程设计照明电

29、源采用BV2.5铜芯线,插座电源等采用BV4铜芯线;除客厅为吸顶灯外,其余均采用座灯。二、 施工部署及进度计划1、工期安排本工程合同计划开工日期:2004年8月21日,竣工日期:2005年7月10日,合同工期315天。计划2004年9月15日前完成基础工程,2004年12月30日完成主体结构工程,2005年6月20日完成装修工种,安装工程穿插进行,于2005年7月1日前完成。具体进度计划详见附图1(施工进度计划)。2、施工顺序基础工程工程定位线(验线)挖坑钎探(验坑)砂砾垫层的施工基础砼垫层刷环保沥青 基础放线(预检)砼条形基础刷环保沥青 毛石基础的砌筑构造柱砼地圈梁地沟回填工。结构工程结构定

30、位放线(预检)构造柱钢筋绑扎、定位(隐检)砖墙砌筑(50cm线找平、预检)柱梁、顶板支模(预检)梁板钢筋绑扎(隐检、开盘申请)砼浇筑下一层结构定位放线重复上述施工工序直至顶。内装修工程门窗框安装室内墙面抹灰楼地面门窗安装、油漆五金安装、内部清理通水通电、竣工。外装修工程外装修工程遵循先上后下原则,屋面工程(包括烟道、透气孔、压顶、找平层)结束后,进行大面积装饰,塑钢门窗在装修中逐步插入。三、 施工准备1、 现场道路本工程北靠北京西路,南临规划道路,交通较为方便。场内道路采用级配砂石铺垫,压路机压。2、 机械准备设2台搅拌机,2台水泵。现场设钢筋切断机1台,调直机1台,电焊机2台,1台对焊机。现

31、场设木工锯,木工刨各1台。回填期间设打夯机2台。现场设塔吊2台。3、施工用电施工用电已由建设单位引入现场;根据工程特点,设总配电箱1个,塔吊、搅抖站、搅拌机、切断机、调直机、对焊机、木工棚、楼层用电、生活区各配置配电箱1个;电源均采用三相五线制;各分支均采用钢管埋地;各种机械均设置接零、接地保护。具体配电箱位置详见总施工平面图。3、 施工用水施工用水采用深井水自来水,并砌筑一蓄水池进行蓄水。楼层用水采用钢管焊接给水管,每层留一出水口;给水管不置蓄水池内,由潜水泵进行送水。4、 生活用水生活用水采用自来水。5、 劳动力安排结构期间:瓦工40人;钢筋工15人;木工15人;放线工2人;材料1人;机工

32、4人;电工2人;水暖工2人;架子工8人;电焊工2人;壮工20人。装修期间抹灰工60人;木工4人;油工8人;电工6人;水暖工10人。四、主要施工方法1、施工测量放线施工测量基本要求A、西夏建材城生活区17#、30#住宅楼定位依据:西夏建材城生活区工程总体规划图,北京路、规划道路永久性定位B、根据工程特点及建筑工程施工测量规程DBI012195,4、3、2条,此工程设置精度等级为二级,测角中误差12,边长相对误差1/15000。C、根据施工组织设计中进度控制测量工作进度,明确对工程服务,对工程进度负责的工作目的。工程定位A、根据工程特点,平面布置和定位原则,设置一横一纵两条主控线即27#楼:(A)

33、轴线和(1)轴线;30#楼:(A)轴线和(1)轴线。根据主轴线设置两条次轴线即27#楼:(H)轴线和(27)轴线;30#楼:(H)轴线和(27)轴线。 B、主、次控轴线定位时均布置引桩,引桩采用木桩,后砌一水泥砂浆砖墩;并将轴线标注在四周永久性建筑物或构造物上,施测完成后报建设单位、监理单位确认后另以妥善保护。C、控轴线沿结构逐层弹在墙上,用以控制楼层定位。D、水准点:建设单位给定准点,建筑物0.00相当于绝对标高1110.500m。基础测量A、在开挖前,基坑根据平面布置,轴线控制桩为基准定出基坑长、宽度,作为拉小线的依据;根据结构要求,条基外侧1100mm为砂砾垫层边,考虑放坡,撒上白灰线,

34、进行开挖。B、在垫层上进行基础定位放线前,以建筑物平面控制线为准,校测建筑物轴线控制桩无误后,再用经纬仪以正倒镜挑直法直接投测各轴线。C、标高由水准点引测至坑底。结构施工测量A、首层放线验收后,主控轴一引至外墙立面上,作为以上务层主轴线竖身高以测的基准。B、施工层放线时,应在结构平面上校投测轴线,闭合后再测设细部尺寸和边线。C、标高竖向传递设置3个标高点,以其平均点引测水平线折平时,尽量将水准仪安置在测点范围内中心位置,进行测设。2、基坑开挖本工种设计地基换工,夯填砂砾垫层1100mm;根据此特点,采用机械大开挖,留200mm厚进行挖工、铲平。开挖时,根据现场实际土质,按规范要求1:0.33放

35、坡,反铲挖掘机挖土。开挖出的土,根据现场实际情况,尽量留足需用的好土,多余土方挖出,避免二次搬运。人工开挖时,由技术员抄平好水平控制小木桩,用方铲铲平。挖掘机挖土应该从上而下施工,禁止采用挖空底脚的操作方法。机械挖土,先发出信号,挖土的时候,挖掘机操作范围内,不许进行其他工作,装土的时候,任何人都不能停留在装土车上。3、砌筑工程材料砖:MU15多孔砖,毛石基础采用MU30毛石。砂浆:0.00以下采用M10水泥砂浆,一、二、三、四层采用M10混合砂浆,五层以上采用M7.5混合砂浆。砌筑要求A、开工前由工长对所管辖班组下发技术交底。B、砌筑前应提前浇水湿润砖块,水率保持在1015。C、砌筑采用满铺

36、满挤“三一砌筑法“,要求灰浆饱满,灰缝812mm。D、外墙转角处应同时砌筑,内外墙交接处必须留斜槎,槎子长度不小于墙体高度的2/3,槎子必须平直、通顺。E、隔墙与墙不同时砌筑又不留成斜槎时可于墙中引出阳槎或在墙的灰缝中预埋拉结筋,每道不少于2根。F、接槎时必须将表面清理干净,浇水湿润,填实砂浆,保持灰缝平直。G、砖墙按图纸要求每50mm设置26钢筋与构造柱拉结,具体要求见结构总说明。H、施工时需留置临时洞口,其侧边离交接处的墙面不少于500mm,顶部设边梁。4、钢筋工程凡进场钢筋须具备材质证明,原材料须取样试验,经复试合格后方可使用。钢筋绑扎前应仔细对照图纸进行翻样,根据翻样配料,施工前由工长对所管辖班组下发技术交底,准备施工工具,做好施工的准备工作。板中受力钢筋搭接,I级钢30d,II级钢40d,搭接位置:上部钢筋在跨中1/3范围内,下部钢筋在支座1/3范围内。钢筋保护层:基础40mm,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论