版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、面向对象编程-面向接口 面向对象编程-面向接口 回顾回顾 v 举例说明在什么样的情况下,需要使用到继承?举例说明在什么样的情况下,需要使用到继承? v 在在JavaJava程序中,多态带给我们的好处是什么?程序中,多态带给我们的好处是什么? 面向对象编程-面向接口 v 掌握掌握JavaJava接口接口 v 理解理解JavaJava接口与多态的关系接口与多态的关系 v 掌握面向接口编程的思想掌握面向接口编程的思想 v 掌握常量接口的使用掌握常量接口的使用 v 设计模式设计模式 本章目标本章目标 面向对象编程-面向接口 单一继承的局限性单一继承的局限性 1 1、如下的类图描述正确吗?、如下的类图描
2、述正确吗? 2 2、青蛙是两栖动物,怎么办呢?、青蛙是两栖动物,怎么办呢? 我该何处何从我该何处何从 面向对象编程-面向接口 什么是什么是JavaJava接口接口 v 接口与前面所学的抽象类一样是一种规范和标准、可以约接口与前面所学的抽象类一样是一种规范和标准、可以约 束类的行为束类的行为 v 定义一个接口不指定具体的实现定义一个接口不指定具体的实现 v 一个一个JavaJava接口是一些方法特征的集合,但没有方法的实现接口是一些方法特征的集合,但没有方法的实现 JavaJava接口中定义的方法在不同的地方被实现,可以具有完接口中定义的方法在不同的地方被实现,可以具有完 全不同的行为全不同的行
3、为 面向对象编程-面向接口 一个例子一个例子 面向对象编程-面向接口 一个实例一个实例 public interface PCI public interface PCI public void start(); public void start(); public void stop(); public void stop(); class SoundCard implements PCI class SoundCard implements PCI public void start() public void start() System.out.println(Du du.); Sy
4、stem.out.println(Du du.); public void stop() public void stop() System.out.println(Sound System.out.println(Sound stop!);stop!); 这是这是JavaJava接口,相当于主接口,相当于主 板上的板上的PCIPCI插槽的规范插槽的规范 class NetworkCard implements PCI class NetworkCard implements PCI public void start() public void start() System.out.prin
5、tln(Send.); System.out.println(Send.); public void stop() public void stop() System.out.println(Network System.out.println(Network stop!);stop!); 声卡、网卡都实现了声卡、网卡都实现了PCIPCI插槽的规范,但行为完全不同插槽的规范,但行为完全不同 面向对象编程-面向接口 一个实例一个实例 public class Assembler public class Assembler public static void main(String publi
6、c static void main(String args) args) PCI nc = new NetworkCard(); PCI nc = new NetworkCard(); PCI sc = new SoundCard(); PCI sc = new SoundCard(); nc.start(); nc.start(); sc.start(); sc.start(); 可以使用可以使用JavaJava接口标识类型接口标识类型 运行时,根据实际创建的对象类型调用相应的方法实现运行时,根据实际创建的对象类型调用相应的方法实现 Du du.Du du. Send.Send. 控制台输
7、出控制台输出 2 2 1 1 面向对象编程-面向接口 生活中的接口生活中的接口 USB接口接口 使用使用USB接口必须接口必须 符合符合USB规范规范 接口是一套规范,遵守这个规范就可以实现功能接口是一套规范,遵守这个规范就可以实现功能 面向对象编程-面向接口 接口的特点接口的特点 JAVAJAVA中一个类能否继承多个父类?中一个类能否继承多个父类? v 接口:接口: 接口可以说是对继承单根性的扩展接口可以说是对继承单根性的扩展 接口提供了一组规范、一个标准接口提供了一组规范、一个标准 接口屏蔽了实现的细节接口屏蔽了实现的细节 方便多人协同开发方便多人协同开发 v 特点:特点: 接口不能被实例
8、化接口不能被实例化 不管是否标识,接口中所有方法都是抽象的,公共的。不管是否标识,接口中所有方法都是抽象的,公共的。 接口中只能定义常量接口中只能定义常量 面向对象编程-面向接口 用接口实现用接口实现 让我们为青蛙找一个合法的身份?让我们为青蛙找一个合法的身份? 面向对象编程-面向接口 JAVAJAVA接口接口 v 开发这样一个小系统,包含类型:教员、中心、打开发这样一个小系统,包含类型:教员、中心、打 印机,具体要求如下:印机,具体要求如下: 教员、以及中心都具有方法:输出详细信息教员、以及中心都具有方法:输出详细信息 中心具有属性:打印机,能够通过中心的打印机打印教员中心具有属性:打印机,
9、能够通过中心的打印机打印教员 或中心的详细信息或中心的详细信息 系统要具备良好的可扩展性与可维护性系统要具备良好的可扩展性与可维护性 打印打印 教员教员 中心中心 教员教员 详细信息详细信息 中心中心 详细信息详细信息 detail方法方法 (输出详细信息)(输出详细信息) 面向对象编程-面向接口 JAVAJAVA接口接口 v以下这个解决方案中存在着什么问题?以下这个解决方案中存在着什么问题? public class UCSTeacher1 public class UCSTeacher1 / /输出教员的详细信息输出教员的详细信息 public String detail() public
10、 String detail() return return 本人是本人是CSUCSU教员教员; public class UCSSchool1 public class UCSSchool1 private Printer printer = new private Printer printer = new Printer();Printer(); / /输出中心的详细信息输出中心的详细信息 public String detail() public String detail() return return 这里是这里是CSUCSU中心中心; /使用打印机打印教员信息使用打印机打印教员信
11、息 public void print(UCSTeacher1 t)public void print(UCSTeacher1 t) printer.print(t.detail();printer.print(t.detail(); /使用打印机打印中心信息使用打印机打印中心信息 public void print(UCSSchool1 s)public void print(UCSSchool1 s) printer.print(s.detail();printer.print(s.detail(); public class Printer public class Printer pu
12、blic void print(String content) public void print(String content) System.out.println(System.out.println(开始打印:开始打印: );); System.out.println(content);System.out.println(content); 每增加一种新类型,都需要增加相应的每增加一种新类型,都需要增加相应的print(print(类型名称类型名称 var)var)方法方法 程序的可扩展性及可维护性极差程序的可扩展性及可维护性极差 这不符合系统的要求这不符合系统的要求 面向对象编程-
13、面向接口 用Java接口重构项目 v 在这个系统中,存在继承关系吗?在这个系统中,存在继承关系吗? 教员、中心属于两种不同的类型,无法通过教员、中心属于两种不同的类型,无法通过“is-ais-a”找到一个找到一个 合适的父类合适的父类 v 教员、中心都存在一个共同的方法特征:教员、中心都存在一个共同的方法特征:detaildetail,它,它 们对们对detaildetail方法有各自不同的实现方法有各自不同的实现这完全符合这完全符合 JavaJava接口的定义接口的定义 面向对象编程-面向接口 类图类图 定义一个定义一个JavaJava接口,在其中定义接口,在其中定义 detaildetai
14、l方法,但没有具体实现方法,但没有具体实现 实现这个实现这个JavaJava接口,不同的类对接口,不同的类对 detaildetail方法有不同的具体实现方法有不同的具体实现 面向对象编程-面向接口 使用了使用了JavaJava接口之后,这个系统有了怎样的改接口之后,这个系统有了怎样的改 进?进? JavaJava接口重构之后接口重构之后 public interface IPrintable public interface IPrintable public String detail();public String detail(); public class UCSSchool2 pu
15、blic class UCSSchool2 implements implements IntroduceableIntroduceable private Printer printer = new private Printer printer = new Printer();Printer(); / /输出中心的详细信息输出中心的详细信息 public String detail() public String detail() return return “这里是中信培训中心这里是中信培训中心; /使用中心打印机打印信息使用中心打印机打印信息 public void print(IPr
16、intable public void print(IPrintable intro) intro) printer.print(intro.detail();printer.print(intro.detail(); public class UCSTeacher2 public class UCSTeacher2 implements implements IPrintableIPrintable / /输出教员的详细信息输出教员的详细信息 public String detail() public String detail() return return “本人是中信教员本人是中信教员
17、; 通过通过JavaJava接口,我们同样可以享受到多态性的好处,大大提高了接口,我们同样可以享受到多态性的好处,大大提高了 程序的可扩展性及可维护性程序的可扩展性及可维护性 使用使用printprint方法时,参数可以是任何方法时,参数可以是任何IntroduceableIntroduceable接口的实现类接口的实现类 的对象,不必再为不同的类型建立不同的的对象,不必再为不同的类型建立不同的printprint方法了方法了 面向对象编程-面向接口 接口作为参数接口作为参数 v 接口描述了一个对象的特征接口描述了一个对象的特征 v 传递接口就是传递了实现接口的对象传递接口就是传递了实现接口的
18、对象 public class SxtSchool2 public class SxtSchool2 /使用中心打印机打印信息使用中心打印机打印信息 public void print(Introduceable public void print(Introduceable intro) intro) printer.print(intro.detail();printer.print(intro.detail(); 面向对象编程-面向接口 什么是面向接口编程什么是面向接口编程 v 开发系统时,主体构架使用接口,接口构成系统的骨架开发系统时,主体构架使用接口,接口构成系统的骨架 v 这样就可
19、以通过更换接口的实现类来更换系统的实现这样就可以通过更换接口的实现类来更换系统的实现 public class UCSSchool2 implements Introduceable public class UCSSchool2 implements Introduceable private Printer printer = new Printer(); private Printer printer = new Printer(); public String detail() public String detail() return return “这里是中信培训中心这里是中信培训
20、中心; /使用中心打印机打印信息使用中心打印机打印信息 public void print(Introduceable intro) public void print(Introduceable intro) printer.print(intro.detail();printer.print(intro.detail(); 面向对象编程-面向接口 面向接口编程第一步面向接口编程第一步 v 能否在前面的安例上添加黑白或彩色打印功能能否在前面的安例上添加黑白或彩色打印功能 v 采用面向接口编程的方式实现,采用面向接口编程的方式实现, v 以下是三个步骤中的第一步:以下是三个步骤中的第一步: 抽
21、象出抽象出JavaJava接口接口 1 1、分析:、分析: 黑白、彩色打印机都存在一个共同的方法特征:黑白、彩色打印机都存在一个共同的方法特征:printprint 黑白、彩色打印机对黑白、彩色打印机对printprint方法有各自不同的实现方法有各自不同的实现 public interface PrinterFace public interface PrinterFace public void print(String public void print(String content);content); 面向对象编程-面向接口 面向接口编程第二步面向接口编程第二步 v 采用面向接口编程
22、的方式实现,以下是三个步骤中的采用面向接口编程的方式实现,以下是三个步骤中的 第二步:第二步: v 实现实现JavaJava接口接口: : 结论:黑白、彩色打印机都实现结论:黑白、彩色打印机都实现PrinterFacePrinterFace接口,各自实现接口,各自实现 printprint方法方法 public class ColorPrinter public class ColorPrinter implements implements PrinterFace PrinterFace public void print(String public void print(String co
23、ntent) content) System.out.println( System.out.println(彩色打印:彩色打印: );); System.out.println(content); System.out.println(content); public class BlackPrinter public class BlackPrinter implements implements PrinterFace PrinterFace public void print(String content) public void print(String content) Syste
24、m.out.println( System.out.println(黑白打印:黑白打印: );); System.out.println(content); System.out.println(content); 面向对象编程-面向接口 面向接口编程第三步 v 采用面向接口编程的方式实现,以下是三个步骤中的采用面向接口编程的方式实现,以下是三个步骤中的 第三步:第三步: 使用使用 3 3、具体实现:、具体实现: public class MySchool3 implements Introduceablepublic class MySchool3 implements Introducea
25、ble private PrinterFace printer; / private PrinterFace printer; /打印机打印机 public void setPrinter(PrinterFace p) public void setPrinter(PrinterFace p) this.printer = p; this.printer = p; public String detail() public String detail() return return 这里是中这里是中; public void print(Introduceable intro) public
26、void print(Introduceable intro) printer.print(intro.detail(); printer.print(intro.detail(); public class Test public class Test public static void main(String args) public static void main(String args) / / 创建中心实例创建中心实例 AccpSchool3 school=new AccpSchool3();AccpSchool3 school=new AccpSchool3(); / /为该中
27、心配备黑白打印机为该中心配备黑白打印机 school.setPrinter(new BlackPrinter();school.setPrinter(new BlackPrinter(); school.print(school); school.print(school); / /为该中心配备彩色打印机为该中心配备彩色打印机 school.setPrinter(new ColorPrinter();school.setPrinter(new ColorPrinter(); school.print(school); school.print(school); 面向对象编程-面向接口 现场编程
28、现场编程收作业的问题收作业的问题 如老师和学员都可以收作业,如老师和学员都可以收作业, 那么收作业的方法应该放在哪个类?那么收作业的方法应该放在哪个类? A:Teacher类类 B:Student类类 C:两个都放两个都放 D:Person类类 E:重新定义重新定义 造成代码冗余造成代码冗余 如果增加一个工程师类,他不会收作业如果增加一个工程师类,他不会收作业 如果继承这个类,如果继承这个类,Person类怎么办类怎么办? 调用收作业的方法不调用收作业的方法不 需要改变需要改变 自定义一个接口来实现自定义一个接口来实现IHomeworkCollector 面向对象编程-面向接口 现场编程现场编
29、程 面向对象编程-面向接口 收作业的问题收作业的问题 public interface IHomeworkCollectorpublic interface IHomeworkCollector void CollectHomework(); void CollectHomework(); public class Student extends Person implements public class Student extends Person implements IHomeworkCollectorIHomeworkCollector public void CollectHome
30、work()public void CollectHomework() MessageBox.Show( MessageBox.Show(报告老师!作业收集完毕!报告老师!作业收集完毕!);); 1 1、定义一个收作业的接口、定义一个收作业的接口 2 2、在有收作业功能的类实现该接口、在有收作业功能的类实现该接口 3 3、不同的类收作业方式不同、不同的类收作业方式不同 面向对象编程-面向接口 作为返回值和参数的意义作为返回值和参数的意义 v 接口作为参数接口作为参数 传递了实现接口的对象传递了实现接口的对象 v 接口作为返回值接口作为返回值 返回一个实现了接口的对象返回一个实现了接口的对象 面
31、向对象编程-面向接口 接口和抽象类比较接口和抽象类比较 派生类必须实现未实现的方法派生类必须实现未实现的方法 包含未实现的方法包含未实现的方法 不能实例化不能实例化相似点相似点 指定定义常量指定定义常量可以定义成员变量可以定义成员变量 实现接口的类必须实现所有成员实现接口的类必须实现所有成员非抽象派生类必须实现抽象方法非抽象派生类必须实现抽象方法 可以实现多个接口可以实现多个接口只能继承一个类只能继承一个类 用用 interface interface 定义定义用用 abstract abstract 定义定义不同点不同点 接口接口抽象类抽象类 面向对象编程-面向接口 小结 public in
32、terface Introduceable public interface Introduceable public String detail();public String detail(); public void introduction()public void introduction() detail();detail(); private void showMessage();private void showMessage(); void speak();void speak(); JavaJava接口中的方法必须是接口中的方法必须是publicpublic JavaJav
33、a接口中不能有方法体实现接口中不能有方法体实现 编译器会自动加上编译器会自动加上publicpublic修饰符修饰符 请指出下列请指出下列JavaJava代码中的错误。代码中的错误。 面向对象编程-面向接口 为什么需要常量为什么需要常量 v 生活中,一周有七天,如何用代码表示?生活中,一周有七天,如何用代码表示? public class Week public class Week private int days = 7;private int days = 7; public static void main(String args) public static void main(St
34、ring args) Week w = new Week();Week w = new Week(); System.System.outout.println(.println(一周有一周有+w.days+w.days+天天);); public class Week public class Week private int days = 7;private int days = 7; public static void main(String args) public static void main(String args) Week w = new Week();Week w =
35、new Week(); w.days +;w.days +; System.out.println(System.out.println(一周有一周有+w.days+w.days+天天);); 一周有一周有7天天 控制台输出控制台输出 v 然而,总有不尽人意的事情发生:然而,总有不尽人意的事情发生: 一周有一周有8 8天天 控制台输出控制台输出 如何保证变量的值在运行期无法被改变?如何保证变量的值在运行期无法被改变?使用常量使用常量 面向对象编程-面向接口 什么是常量 v 常量是一种标识符,它的值在运行期间恒定不变常量是一种标识符,它的值在运行期间恒定不变 v 常量标识符在程序中只能被引用,而
36、不能被重新赋值常量标识符在程序中只能被引用,而不能被重新赋值 常量常量圆周率圆周率PIPI 圆周率圆周率PIPI 代码表示代码表示 方式方式 public static final double PI = 3.149323846;public static final double PI = 3.149323846; 用法用法 将将angang角度转换成径度角度转换成径度 public static double toRadians(double ang) public static double toRadians(double ang) return ang / 180.0 return
37、ang / 180.0 * * PI; PI; 面向对象编程-面向接口 关键字final v 许多编程语言都提供了某种方法,来向编译器告知许多编程语言都提供了某种方法,来向编译器告知 一个数据是恒定不变的。比如:一个数据是恒定不变的。比如: 一个永不改变的一个永不改变的“编译时常量编译时常量” 一个在运行时被初始化的值,而你不希望它被改变。一个在运行时被初始化的值,而你不希望它被改变。 v 在在javajava语言中使用语言中使用finalfinal关键字达到此目标关键字达到此目标 v finalfinal变量变量 基本数据类型使用基本数据类型使用finalfinal:数值恒定不变:数值恒定不
38、变 引用数据类型使用引用数据类型使用finalfinal:引用恒定不变:引用恒定不变 v finalfinal方法:方法不被覆盖方法:方法不被覆盖 v finalfinal类:类不被继承类:类不被继承 面向对象编程-面向接口 关键字static v finalfinal可以定义常量吗?可以定义常量吗? v 回顾回顾staticstatic的用法?的用法? v 关键字关键字staticstatic告诉编译器,只分配一次内存空间。告诉编译器,只分配一次内存空间。 v 静态的只能访问静态的,非静态的可以访问一切。静态的只能访问静态的,非静态的可以访问一切。 v 不能在静态方法中使用不能在静态方法中使
39、用thisthis关键字。关键字。 面向对象编程-面向接口 常量的优点常量的优点 v 如果不使用常量,直接在程序中填写数字或字符串,将会如果不使用常量,直接在程序中填写数字或字符串,将会 有什么麻烦?有什么麻烦? public static double toRadians(double ang) public static double toRadians(double ang) return ang / 180.0 return ang / 180.0 * * 3.1493238463.149323846; ; public static double toDegrees(double a
40、ng) public static double toDegrees(double ang) return ang return ang * * 180.0 / 180.0 / 3.1493238463.149323846; ; public static final double PI = 3.149323846;public static final double PI = 3.149323846; / / 圆周率圆周率 public static double toRadians(double ang) public static double toRadians(double ang)
41、 return ang / 180.0 return ang / 180.0 * * PI; PI; public static double toDegrees(double ang) public static double toDegrees(double ang) return ang return ang * * 180.0 / PI; 180.0 / PI; 程序的可读性变差:用程序的可读性变差:用 户很难理解数字或字符户很难理解数字或字符 串的意思串的意思 程序的可维护性变差:如程序的可维护性变差:如 果数值改变,则需要在很果数值改变,则需要在很 多地方改动,既麻烦又易多地方改动
42、,既麻烦又易 出错出错 使用常量可以增强程序的可读性、可维护性使用常量可以增强程序的可读性、可维护性 面向对象编程-面向接口 Java中常量的定义规则 v 加入加入final final 关键字代表常量,关键字代表常量, 加入加入static static 关键字关键字 代表类变量代表类变量 v 尽量使用含义直观的常量来表示那些将在程序中多尽量使用含义直观的常量来表示那些将在程序中多 次出现的数字或字符串次出现的数字或字符串 public class AccpStudent public class AccpStudent public static final int FEMALE = 1;
43、 /public static final int FEMALE = 1; /代表女性代表女性 public static final int MALE = 2; /public static final int MALE = 2; /代表男性代表男性 private int sex; /private int sex; /性别性别 public void setSex(int sex) public void setSex(int sex) if(sex=FEMALE)if(sex=FEMALE) System.out.println(System.out.println(这是一名女学生这是
44、一名女学生);); else if(sex = MALE)else if(sex = MALE) System.out.println(System.out.println(这是一名男学生这是一名男学生);); this.sex = sex;this.sex = sex; 面向对象编程-面向接口 在Java接口中声明常量 v 在在Java Java 接口中声明的变量在编译时会自动加上接口中声明的变量在编译时会自动加上 static finalstatic final的修饰符,即声明为常量,因而的修饰符,即声明为常量,因而JavaJava 接口通常是存放常量的最佳地点接口通常是存放常量的最佳地点
45、 public interface AccpSchoolType public interface AccpSchoolType public static final String SCHOOL = public static final String SCHOOL = “软件培训中心软件培训中心 ; public static final String CITY = public static final String CITY = “长沙林科大长沙林科大; public interface AccpSchoolType public interface AccpSchoolType St
46、ring SCHOOL = String SCHOOL = “软件培训中心软件培训中心; String CITY = String CITY = “长沙林科大长沙林科大; 等同于等同于 面向对象编程-面向接口 小结小结 3 3 v 编写一个用于放置常量的编写一个用于放置常量的JavaJava接口接口ConstantsConstants,具,具 有常量有常量MAXMAX和和MINMIN v 编写一个测试类编写一个测试类ConstantsTestConstantsTest,在,在mainmain方法中求方法中求 取取ConstantsConstants中的两个常量之差中的两个常量之差 面向对象编程
47、-面向接口 内部类内部类 v 内部类(内部类(inner classinner class):允许一个类的定义出现在另):允许一个类的定义出现在另 一个类中,将处于另一个类中的一个类中,将处于另一个类中的“寄生类寄生类”称为称为“内部内部 类类”(inner classinner class),也称为),也称为“类属类类属类” 这样的一组类在逻辑上是一个整体,内部类和外层封装它的类这样的一组类在逻辑上是一个整体,内部类和外层封装它的类 之间存在逻辑上的从属关系之间存在逻辑上的从属关系 内部类对其封装类的内部成员有访问权限内部类对其封装类的内部成员有访问权限 v 为什么需要内部类?为什么需要内部
48、类? 内部类方法可以访问外部类中定义的有的数据,包私有数据。内部类方法可以访问外部类中定义的有的数据,包私有数据。 内部类可以对同一个包中的其他类隐藏起来。内部类可以对同一个包中的其他类隐藏起来。 当想要定义一个回调函数且不想编写大量代码时,使用匿名内当想要定义一个回调函数且不想编写大量代码时,使用匿名内 部类比较便捷。部类比较便捷。 面向对象编程-面向接口 内部类特性内部类特性 v 内部类可以声明为抽象类内部类可以声明为抽象类 ,因此可以被其它的内部类,因此可以被其它的内部类 继承。也可以声明为继承。也可以声明为finalfinal的。的。 v 内部类可以声明为内部类可以声明为private
49、private或或protectedprotected。 v 内部类可以声明为内部类可以声明为staticstatic的,但此时就不能再使用外层的,但此时就不能再使用外层 封装类的非封装类的非staticstatic的成员变量;的成员变量; v 非非staticstatic的内部类中的成员不能声明为的内部类中的成员不能声明为staticstatic的,只有的,只有 在顶层类或在顶层类或staticstatic的内部类中才可声明的内部类中才可声明staticstatic成员。成员。 面向对象编程-面向接口 内部类(内部类( Inner class Inner class )的种类)的种类 v 实
50、例内部类:和普通类一样,只是定义在另一个类中。实例内部类:和普通类一样,只是定义在另一个类中。 v 静态内部类:加有关键字静态内部类:加有关键字staticstatic的内部类。的内部类。 v 局部内部类:定义在一个方法中的内部类。局部内部类:定义在一个方法中的内部类。 v 匿名内部类:没有具体类名的内部类匿名内部类:没有具体类名的内部类。 面向对象编程-面向接口 内部类的例子内部类的例子 public class Outer1 public class Outer1 private int size; private int size; / /* * 定义一个内部类,名为定义一个内部类,名为
51、 Inner Inner * */ / public class Inner public class Inner public void doStuff() public void doStuff() / / 内部类可以访问外部类的私有属性内部类可以访问外部类的私有属性 size+;size+; public void testTheInner() public void testTheInner() Inner i = new Inner(); Inner i = new Inner(); i.doStuff(); i.doStuff(); 面向对象编程-面向接口 实例化内部类实例化内部类 v 实例化内部类的两种方法:实例化内部类的两种方法: 法一:法一: Outer.Inner in=new Outer().new Inner();Outer.Inner in=new Outer().new Inner(); 法二:法二: Outer o=new Outer();Outer o=new Outer(); Outer.Inner I=new o.new Inner();Outer.Inner I=new o.new Inner(); 如果内部类是如果
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 餐厅安全培训档案课件
- 现代农场经营管理方案范本
- 餐厅人员厨房安全培训课件
- 房地产企业全面税收筹划实操方案
- 顶岗安全培训心得体会课件
- XX公司新员工安全技能考核(2024年3月)
- XX公司危险源辨识与风险评估考核(2024年7月)
- 工贸企业新员工安全生产隐患排查治理体系考核(2024年1月)
- 鞍山半挂车培训讲解课件
- 建筑保温施工安全技术方案范文
- 生蚝课件教学课件
- 2025年及未来5年市场数据中国机电安装工程市场调查研究及行业投资潜力预测报告
- 2025年湖南省公务员录用考试《申论》真题(县乡卷)及答案解析
- kv高压线防护施工方案
- 住建局执法证考试题库及答案2025
- 主管护师聘任述职报告
- AI搜索时代:从GEO到AIBE的品牌新蓝图
- 产品知识培训会议总结
- 四川省成都市树德实验中学2026届九年级数学第一学期期末监测试题含解析
- 与业主沟通技巧培训
- 专题11 圆(安徽专用)5年(2021-2025)中考1年模拟《数学》真题分类汇编
评论
0/150
提交评论