第5章java接口与多态

合集下载

java第五章

java第五章

五、类的重用

1.设计并实现一个MyGraphic类及其子类MyRectangle:

(1) MyGraphic类包括两个属性:线条的颜色lineColor与填充颜色fillColor,方法包括:

无参构造方法——用于初始化lineColor与fillColor分别为黑色与红色;

带两个参数的构造方法——用形参给成员变量进行初始化;

get/set方法——用于获取和修改属性值;

print方法——用于输出属性值。

(2) 矩形类MyRectangle有长、宽两个私有属性,方法有:构造方法、get/set方法、计算周长与面积的方法,其中在构造方法中调用父类MyGraphic的构造方法初始化父类继承来的两个属性,并初始化本类定义的属性。

(3) 定义测试类创建MyGraphic和MyRectangle的对象,调用相应方法输出颜色,对于矩形对象还要求周长、面积最后输出。

class MyGraphic{

private String lineColor,fillColor;

//无参构造方法

public MyGraphic(){

lineColor="black";

fillColor="red";

//以上两个赋值语句也可以通过调用this("black","red");实现

}

//有参构造方法

public MyGraphic(String lineColor,String fillColor){

this.lineColor=lineColor;

this.fillColor=fillColor;

}

public String getLineColor() {

第5章__Java常用类和接口

第5章__Java常用类和接口
String

}
5.1.1 String类
6、 getBytes()方法 此方法使用平台的默认字符集将此字符串编码
为 byte 序列,并将结果存储到一个新的 byte
数组中。也可以使用指定的字符集对字符串进 行编码,把结果存到字节数组中,String类中 提供了getBytes()的多个重载方法。
String(byte[] bytes,int offset,int length) String(byte[] ascii,int hibyte,int offset,int count) String(byte[]bytes,int offset,int length,String charsetName) String(byte[] bytes,String charsetName) String(char[] value) String(char[] value,int offset,int count) String(int[] codePoints,int offset,int count) String(String original)
第5章 Java常用类和接口
5.1字符串处理类
在Java中,字符串是作为内置对象进行处 理的,在java.lang包中,有两个专门的类用来
处理字符串,分别是String和StringBuffer,
本节重点介绍这两个类的用法。

Java实验报告继承、多态、接口和异常处理

Java实验报告继承、多态、接口和异常处理

Java实验报告继承、多态、接⼝和异常处理

实验5 继承、多态、接⼝和异常处理

⼀、实验⽬的

1、掌握Java的类和对象的声明和使⽤⽅法;

2、掌握Java的类的继承和实现⽅法;

3、掌握多态性在类的继承中的运⽤;

4、掌握接⼝的定义与使⽤;

5、掌握基本异常的处理机制;

6、熟悉try语句与catch语句的搭配使⽤;

7、了解有异常处理与没有异常处理的差别;

8、多重catch语句的使⽤;

9、使⽤Throws声明异常和Throw抛出异常。

⼆、实验环境

1、PC微机;

2、DOS操作系统或 Windows 操作系统;

3、Java sdk程序开发环境、eclipse集成环境。

三、实验内容

1. 设计三个类,分别是学⽣类Student,本科⽣类UnderGraduate,研究⽣类

Postjgraduate,其中Student类是⼀个抽象类,它包含学⽣的基本信息如姓名、所学课程、课程成绩等,⽽Undergraduate类和Postgraduate类都是Student类的⼦类,这两个类计算课程成绩等级的⽅法有所不同,如下表所⽰。假设某班级⾥既有研究⽣⼜有本科⽣,编写程序统计出全班学⽣

2. 和

Mobilephone具体实现,并设计⼀个应⽤程序类来使⽤这些类。

3.要求设计⼀个GUI图形窗⼝程序,该程序让⽤户输⼊⼀个星期中的任意⼀天的数字1-7,然后输出该数字所对应的是星期⼏。

四、实验步骤

实验内容⼀

1.建⽴package experiment5_1,其最终⽬录结构如下:

2.建⽴Student类:

package experiment5_1;

JAVA20-5

JAVA20-5

5.2.2 包的定义

使用该语句的注意事项:


(1)package语句在每个Java源程序中只能 有一条,即一个类只能属于一个包。 (2)package语句必须在程序的第一行。
<<
5.2.2 包的定义


Leabharlann Baidu
例:package shape; package shape.shape.Circle 创建包就是在当前文件夹下创建一个子文件夹, 存放这个包中包含的所有类的.class文件。 以上例子中的第一条语句在当前文件夹下创建了 shape文件夹,第二条语句在shape下又创建了 一个shapeCircle子文件夹,当前包中的所有类 就存放在这个文件夹里。
<<
5.3.1类修饰符

5.类修饰符使用注意事项 可以同时使用两个修饰符来修饰一个类,当使用两个 修饰符修饰一个类时,这些修饰符之间用空格分开,写在 关键字class之前,修饰符的顺序对类的性质没有任何影 响。 需要注意的是: 一个类可以被修饰为public abstract,也可以被修饰 为public final,但不能被修饰为abstract final,这是 因为abstract类自身没有对象,需要派生子类后再创建 子类的对象,而final类不能派生子类,所以不存在用 abstract final两个修饰符修饰的类。 <<

java-第五章_软件学院

java-第五章_软件学院

J_Class a = new J_Class();
System.out.println(a.mb_method());
}
}
练习
大外软件学院(徐)
abstract class MineBase {
必须实现amethod()
public abstract void amethod();
static int i;
System.out.println("“Hwaoprpkyeevveerryyddaayy..""));; } }
接口的特点(2)
大外软件学院(徐)
◘ 如果父类使用了某个接口,子类自然也使用该接口,但不 必再使用implements声明了
interface Animal { int height = 10; void fly();
public int mb_function(){}
}
(B)class J_Class extends J_Interface{
public int mb_method(int data){}
public int mb_function(int index){}
}
(C)class J_Class implements J_Interface{
◘ 一个类可以实现多个接口,中间用“,”分割 ◘ 如果一个类声明实现一个接口,但没有实现接口中的所有

java答案第五章

java答案第五章
}
//sum方法
public float sum(){
return(this.scoreOfenglish+this.scoreOfmath+this.scoreOfcomputer);
}
//testScore测评成绩/平均分
public float testScore(){
return(this.scoreOfsum/3);
return "B的方法2";
}
}
// test5_6
public class test5_6 {
public static void main(String args[]){
A a=new B();
;
}
}
7.什么是多态?如何实现多态?
答:多态性是指不同类型的对象可以响应相同的消息。利用向上塑性技术,一个父类的应引用变量可以指向不同的子类对象;而利用动态绑定技术,可以再运行时根据父类引用变量所指对象的世纪类型执行相应的子类方法,从而实现多态性。
SetPi b=new SetPi(3.00);
"改变Pi=3.00圆的面积:"+c.area());
}
}
运行结果:
3.在什么情况下,可以对父类对象的引用进行强制类型转换,使其转化成子类对象的引用?
答:一个对象被塑型为父类或接口后,可以再一次被塑型回到它原来所属的类,即转化成原类对象的引用。

java 实验5 接口多态 实验报告

java 实验5 接口多态  实验报告

实验五接口、多态与内部类

实验目标:

1、理解接口、塑型、多态的概念并能熟练应用;

2、熟练掌握接口的定义和使用;

3、深刻理解构造方法的调用顺序,理解编写时需要注意的问题;

4、了解并学会使用内部类

实验任务:

1、继承时的多态:目测给出下面代码的执行输出结果,并简单解释每一行输出的原因。

答:首先,该程序的主函数是Vehicle v=new Vehicle();即先声明并实例化一个汽车对象,而v.test();则是调用汽车的测试方法;而test方法里,Vehicle vc=new Car();是将上面的汽车指向了一个具体的小汽车对象;Bus vb=new Bus();将公共汽车指向了一个具体的公共汽车对象;drive();调用汽车的驾驶方法;vc.drive();调用小汽车的驾驶方法;vb.drive();调用公共汽车的驾驶方法;而vc.brake();vb.brake();则是直接调用汽车的刹车方法。因而运行结

果如下:

A new bus.

Vehicle is driven

Car is driven

Bus is driven

Vehicle is braked

Vehicle is braked

2.针对下面的简单的类图,从面向对象的角度,将Instrument定义成接口,应怎样实现。编写能完成如图功能的程序,并再编写一个简单的应用程序进行多态性测试。(参考例子5-9;实验4该题是要求用抽象类来实现,在此要求用接口实现,还要进行多态性测试)

说明:Instrument表示乐器、Wind表示管乐器、Percussion敲击乐器、Stringed表示弦乐器、Woodwind表示木管乐器、Brass表示铜管乐器。

第5章 深入理解Java语言 优质课件

第5章 深入理解Java语言 优质课件

class TestVirtualInvoke
{

static void doStuff(Shape s)

{ s.draw();


}


}
If (s instanceof Circle) {
((Circle)s).test(); }
public static void main(String[] args) {
else p=new Professor();
... … p.print(x,y);
Class Student extends Person { //detail omitted … public void print(int a,int b) {… …}
pubiic void print(int a)
class Triangle extends Shape { void draw()
{System.out.println(“Draw Triangle”);} }
class Line extends Shape { void draw()
{System.out.println(“Draw Line”);} }
}
Person类对象
Object
Student类对象
父类对象和子类对象的转化原则(一)

Java第五章--继承与多态

Java第五章--继承与多态
Java源文件的第一条语句:package 包名; 包名一般用小写,一个编译单元中只允许一个。
没有package语句,放在当前目录下的无名包中。
CH5 继承与多态
包的使用(其他包中的类)
程序文件的开头使用import语句引入所需要的类; 程序文件的开头利用import引入整个包;
使用包名作为类的前缀。
类的继承——方法的继承与覆盖
方法的继承—— 父类的所有非私有方法可以被子类继承。 方法的覆盖——
方法名、返回值和 参数列表
子类重新定义一个与父类同名的方法。 子类覆盖时应该定义与父类完全相同的方法头。
CH5 继承与多态
类的继承——域的隐藏与方法的覆盖
不同之处:
子类隐藏父类的域只是使之不可见,父类的同名域 在子类对象中仍然占有自己的独立的内存空间; 子类方法对父类同名方法的覆盖将清除父类方法占 用的内存,从而使父类方法在子类对象中不复存 在。
3、执行显式初始化定义
4、执行构造函数中的初始化
CH5 继承与多态
包(package)
Java利用包来组织和管理类,对应于文件系 统的目录结构。 包是一种松散的类的集合,同一包中的类默认 可以互相访问。
一个包中的类不能重名,不同的包中类名可重。 包有两种:无名包和有名包。
CH5 继承与多态
包的创建
ch5继承与多态?实现接口声明类时用implements声明要实现的接口类在实现指定接口的抽象方法时必须使用完全相同的方法头返回值参数列表等接口的抽象方法的访问控制符已指定为声明要实现的接口类在实现指定接口的抽象方法时必须使用完全相同的方法头返回值参数列表等接口的抽象方法的访问控制符已指定为public类实现时必须类实现时必须显式地使用publicch5继承与多态?实现接口声明类时用implements声明要实现的接口非抽象类

Java教程第五章PPT

Java教程第五章PPT

类、数据成员和成员方法的访问控制符及其作用
5.2.1 公共访问控制符public
当一个类的访问控制符为public时,表明这个 类作为整体对其他类是可见和可使用的,这个类 就具有了被其他包中的类访问的可能性。但是, 处于不同包中的public类作为整体对其他类是可 见的,并不代表该类的所有数据成员和成员方法 也同时对其他类是可见的,这得由这些数据成员 和成员方法的修饰符来决定。只有当public类的 数据成员和成员方法的访问控制符也被声明为 public时,这个类的所有用public修饰的数据成 员和成员方法才同时对其他类也是可见的。 需要注意的是,数据成员和成员方法的访问控 制符被声明为public时,会造成安全性和封装性 下降,所以一般应尽量少用。
1)同一对象可接收不同形式的多个消息, 产生不同的响应; 2)相同形式的消息可以发送给不同对象, 所做出的响应可以是截然不同的; 3)消息的发送可以不考虑具体的接收者, 对象可以响应消息,也可以对消息不予理 会,对消息的响应并不是必须的。
5.1.2 公有消息和私有消息 在面向对象系统中,消息分为两类:公 有消息和私有消息。 当有一批消息同属于一个对象时,由外 界对象直接发送给这个对象的消息称为公 有消息;而对象自己发送给本身的消息称 为私有消息。私有消息对外是不开放的, 外界不必了解它。外界对象只能向此对象 发送公有消息,而不能发送私有消息,私 有消息是由对象自身发送的。

列举java中多态的体现

列举java中多态的体现

列举java中多态的体现

多态是面向对象编程中的一个重要概念,它允许不同的对象对同一消

息做出不同的响应。在Java中,多态性是通过继承和接口实现来实现的。下面将列举Java中多态的体现。

一、方法重载

方法重载是指在同一个类中定义了两个或两个以上名称相同但参数类

型或个数不同的方法。这种情况下,当调用该方法时,编译器会根据

参数类型和个数来判断应该调用哪个方法。这种方式就是Java中最基本的多态性体现。

二、方法覆盖

方法覆盖是指子类重新定义了父类中已有的方法,并且子类和父类中

该方法具有相同的名称、返回值类型和参数列表。当使用父类引用变

量引用子类对象时,调用该方法时会自动调用子类中定义的那个方法,而不是父类中定义的那个方法。

三、向上转型

向上转型是指将子类对象赋值给父类引用变量。这种情况下,可以通

过父类引用变量来访问子类对象中继承自父类的成员变量和成员方法。由于向上转型后只能访问到父类中定义的成员变量和成员方法,因此

无法直接访问子类中定义的成员变量和成员方法。

四、动态绑定

动态绑定是指在运行时根据对象的实际类型来确定调用哪个方法。在Java中,所有的非私有方法都是动态绑定的,也就是说,当调用一个

非私有方法时,编译器不会确定要调用哪个方法,而是等到运行时才

根据对象的实际类型来确定要调用哪个方法。

五、抽象类和接口

抽象类和接口也是Java中多态性的体现。抽象类和接口都定义了一些规范,而具体实现则由子类来完成。当使用父类引用变量引用子类对

象时,可以通过父类引用变量来访问子类对象中实现了父类或接口中

定义的规范的成员变量和成员方法。

java接口的知识点

java接口的知识点

java接口的知识点

Java接口是Java编程语言中的一个重要概念,它是一种抽象类型,用于定义一组方法,但不提供实现。接口可以被类实现,从而实现接口中定义的方法。在Java中,接口是一种非常重要的编程工具,它可以帮助我们实现代码的重用和模块化,提高代码的可维护性和可扩展性。本文将介绍Java接口的知识点,包括接口的定义、实现、继承、多态等方面。

一、接口的定义

在Java中,接口是一种抽象类型,它定义了一组方法,但不提供实现。接口的定义使用关键字interface,语法如下:

```

[public] interface 接口名 [extends 父接口列表] {

// 常量定义

// 方法定义

}

```

其中,public关键字表示接口是公共的,可以被其他包中的类访问;接口名是标识符,遵循Java命名规范;extends关键字表示该接口继承自其他接口,可以继承多个接口,用逗号分隔;接口中可以定义常量和方法,但不能定义变量和构造方法。

二、接口的实现

接口定义了一组方法,但不提供实现,因此需要通过实现接口的类来提供方法的具体实现。在Java中,一个类可以实现一个或多个接口,实现接口使用关键字implements,语法如下:

```

[public] class 类名 [extends 父类名] [implements 接口名列表] {

// 成员变量

// 构造方法

// 方法实现

}

```

其中,public关键字表示类是公共的,可以被其他包中的类访问;类名是标识符,遵循Java命名规范;extends关键字表示该类继承自其他类,可以继承一个类,但不能继承多个类;implements关键字表示该类实现了一个或多个接口,可以实现多个接口,用逗号分隔;类中可以定义成员变量、构造方法和方法实现。

第5章java接口与多态

第5章java接口与多态
public boolean start() { //启动飞机,成功则返回true }
public void stop() { //停止 } public boolean turn(int degrees) { //转向,成功则返回true}
public double fuelRemaining() { //返回燃料剩余量 }
Circle cir=new Circle(2.0);
System.out.println("Area of cir = " + cir.area()); }
}
❖ 运行结果
Area of rect = 30.0
Area of cir = 12.56
第十二页,共90页。
12
5.1.2 实现接口——例5_5
6
5.1.1 接口的作用及语法——例5_2
❖ 声明一个接口Shape2D,可利用它来实现二维的几何形
状类Circle和Rectangle
把计算面积的方法声明在接口里
pi值是常量,把它声明在接口的数据成员里
interface Shape2D{
//声明Shape2D接口
final double pi=3.14;
5.1 接口
❖ 接口
与抽象类一样都是定义多个类的共同属性 使抽象的概念更深入了一层,是一个“纯”抽象类,它只提

lesson05-03 Java继承接口和抽象类--转型和多态

lesson05-03 Java继承接口和抽象类--转型和多态

Java 核心技术

第五章继承、接口和抽象类

第三节转型、多态和契约设计

华东师范大学陈良育

1

•变量支持互相转化,比如int a = (int) 3.5;

•类型可以相互转型,但是只限制于有继承关系的类。

–子类可以转换成父类,而父类不可以转为子类。

–子类继承父类所有的财产,子类可以变成父类(从大变小,即向上转型);从父类直接变成子类(从小变大,即向下转型)则不允许。

•父类转为子类有一种情况例外

–就是这个父类本身就是从子类转化过来的。

•类型转换,带来的作用就是多态。

•子类继承父类的所有方法,但子类可以重新定义一个名字、参数和父类一样的方法,这种行为就是重写(覆写,覆盖, overwrite/override, not overload(重载))。

•子类的方法的优先级高于父类的。

•多态的作用

–以统一的接口来操纵某一类中不同的对象的动态行为–对象之间的解耦

•参看AnimalTest.java

•Java编程设计遵循契约精神

•契约:规定规范了对象应该包含的行为方法

•接口定义了方法的名称、参数和返回值,规范了派生类的行为

•基于接口,利用转型和多态,不影响真正方法的调用,成功地将调用类和被调用类解耦(decoupling)

•被调用类(havaLunch只和Animal有联系)

•调用类

总结

•类转型:子类可以转父类,父类不可以转子类(除非父类对象本身就是子类)

•多态:子类转型为父类后,调用普通方法,依旧是子类的方法

•契约设计:类不会直接使用另外一个类,而是采用接口的形式,外部可以“空投”这个接口下的任意子类对象

java接口技术和多态

java接口技术和多态

实验 java接口技术和多态

一、实验目的:

掌握接口技术和多态

二、实验内容:

1.创建以下类图所示的各类

三、实验要求:

1. 实现接口的继承;

2. 实现各个类的接口方法;

3. 多态的使用。

四、实验步骤:

1.定义接口Payment,Payment包含两个常数:

EmployerPayment(职员工资)和

ManagerPayment(管理员工资),Employer类和

Manager类分别实现getMonthlyPayment方法,显示月工资,在main方法中显示Employer和Manager对象的工资。

2.定义接口ShowAble,ShowAble包含showMe()方法和指示图片目录的常量filePath,Employer类和Circle类分别实现ShowAble接口,请在Circle,Employer和

Manager类中实现showMe()方法(注1),利用多态机制

在main方法中调用showMe方法显示Circle,Employer 和Manager对象的图像。

五、自做作实验

1.定义一个描述人的基本类,该类包括人的性别和出

生日期两个数据成员,以及设置和获取这些属性值的

方法成员;再定义一个大学生类,使大学生类具有人

的所有属性外,还具有姓名、学号,大学入学成绩,

籍贯属性以及设置和获取这些属性值的方法成员;编

写完整的程序,完成一个具有班级学生统计信息功能

的小程序。

Main程序1:

package test;

import business.demo.person.*;

public class Test1 {

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
接口不能用new运算符直接产生对象,必须利用其 特性设计新的类,再用新类来创建对象
利用接口设计类的过程,称为接口的实现,使用 implements关键字
语法如下
public class 类名称 implements 接口名称 { /* Bodies for the interface methods */ /* Own data and methods. */
//数据成员一定要初始化
public abstract double area(); //抽象方法
}
在接口的声明中,允许省略一些关键字,也可声明如下
interface Shape2D{ double pi=3.14; double area();
}
8
JAVA语言程序设计
5.1.2 实现接口
❖ 接口的实现
它只提供一种形式,并不提供实现 允许创建者规定方法的基本形式:方法名、参数列
表以及返回类型,但不规定方法主体 也可以包含基本数据类型的数据成员,但它们都默
认为static和final
2
JAVA语言程序设计
5.1.1 接口的作用及语法
❖ 接口的作用
是面向对象的一个重要机制 实现多继承,同时免除C++中的多继承那样的复
Insurable item = (Insurable)jetta; //对象转型为接口类型
item.getPolicyNumber();
item.calculatePremium();
item.getMileage();
// 接口中没有声明此方法,不可以
jetta.getMileage();
// 类中有此方法,可以
JAVA语言程序设计
5.1.1 接口的作用及语法——例5_1
❖ 保险公司的例子
具有车辆保险、人员保险、公司保险等多种保险业务, 在对外提供服务方面具有相似性,如都需要计算保险费 (premium)等,因此可声明一个Insurable 接口
在UML图中,实现接口用带有空三角形的虚线表示
<<Interface>> Insurable
((Car)item).getMileage(); // 转型回原类,可调用此方法了
11
JAVA语言程序设计
5.1.2 实现接口 ——例5_4
声明Circle与Rectangle两个类实现Shape2D接口
class Circle implements Shape2D
{ double radius; public Circle(double r) { radius=r; } public double area() { return (pi * radius * radius); }
JAVA语言程序设计
第5章 接口与多态
❖ 5.1 接口 ❖ 5.2 塑型 ❖ 5.3 多态的概念 ❖ 5.4 多态的应用 ❖ 5.5 构造方法与多态 ❖ 5.6 内部类 ❖ 5.7 本章小结
1
JAVA语言程序设计
5.1 接口
❖ 接口
与抽象类一样都是定义多个类的共同属性 使抽象的概念更深入了一层,是一个“纯”抽象类,
}
7
JAVA语言程序设计
5.1.1 接口的作用及语法——例5_2
❖ 声明一个接口Shape2D,可利用它来实现二维的几 何形状类Circle和Rectangle
把计算面积的方法声明在接口里 pi值是常量,把它声明在接口的数据成员里
interface Shape2D{
//声明Shape2D接口
final double pi=3.14;
6
JAVA语言程序设计
5.1.1 接口的作用及语法——例5_1保险接口的声明
❖ 例5.1中的Insurable 接口声明如下,可见其 中的方法都是抽象方法
public interface Insurable { public int getNumber(); public int getCoverageAmount(); public double calculatePremium(); public Date getExpiryDate();
杂性 建立类和类之间的“协议”
➢ 把类根据其实现的功能来分别代表,而不必顾虑它所 在的类继承层次;这样可以最大限度地利用动态绑定, 隐藏实现细节
➢ 实现不同类之间的常量共享
3
JAVA语言程序设计
5.1.1 接口的作用及语法——与抽象类的不同
❖ 接口允许我ቤተ መጻሕፍቲ ባይዱ在看起来不相干的对象之间 定义共同行为
4
}
10
JAVA语言程序设计
5.1.2 实现接口——对象转型
❖ 对象可以被转型为其所属类实现的接口类型
getPolicyNumber、calculatePremium是Insurable接口中声 明的方法
getMileage是Car类新添加的方法,Insurable接口中没有声明 此方法
Car jetta = new Car();
Company
Person
Car
5
JAVA语言程序设计
5.1.1 接口的作用及语法
❖ 接口的语法
声明格式为
[接口修饰符] interface 接口名称 [extends 父接口 名]{
…//方法的原型声明或静态常量 }
接口的数据成员一定要赋初值,且此值将不 能再更改,允许省略final关键字
接口中的方法必须是“抽象方法”,不能有 方法体,允许省略public及abstract关键字
} ➢ 必须实现接口中的所有方法 ➢ 来自接口的方法必须声明成public
9
JAVA语言程序设计
5.1.2 实现接口 ——例5_3
❖ 实现接口Insurable,声明汽车类实现例5.1中的 Insurable接口,实现接口中的所有抽象方法
public class Car implements Insurable { public int getPolicyNumber() { // write code here } public double calculatePremium() { // write code here } public Date getExpiryDate() { // write code here } public int getCoverageAmount() { // write code here } public int getMileage() { //新添加的方法 //write code here }
相关文档
最新文档