Java面向对象程序设计2.ppt_第1页
Java面向对象程序设计2.ppt_第2页
Java面向对象程序设计2.ppt_第3页
Java面向对象程序设计2.ppt_第4页
Java面向对象程序设计2.ppt_第5页
已阅读5页,还剩80页未读 继续免费阅读

下载本文档

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

文档简介

1、第三章 Java面向对象程序设计,面向对象概述,3.1,类与对象,3.2,成员变量和成员方法,3.3,继承与多态,3.4,包、接口与内部类,3.5,万物皆对象,世界是由什么组成的?,身边的对象,布兰尼,朱丽叶,顾客 姓名:朱丽叶 年龄:28 体重:52千克 操作: 购买商品,姓名:布兰尼 职衔:收银员 年龄:35 体重:60千克 操作: 收款 打印账单,对象的特征属性,属性对象具有的各种特征 每个对象的每个属性都拥有特定值 例如:布兰尼和朱丽叶的体重不一样,60kg,布兰尼,属性,35岁,对象的特征方法,方法对象执行的操作,打单,收银,方法,刷卡,对象的属性和方法,列出尼古拉斯凯奇驾驶的这辆法

2、拉利F360 Spider的属性和方法 列出小狗对象的属性和方法,属性: 品牌:法拉利 型号:F360 Spider 颜色:黄色 价格:380万元 方法: 发动 停止 加速,属性: 颜色:白色 方法: 叫 跑 吃,小结1,说一说教室里的对象 描述他们的属性和方法,颜色:黑色 品牌:BENQ 投影,姓名:张三 年龄:20 学习,类型:白炽灯 开 关 变亮 变暗,材制: 木质 支撑物品,封装,对象同时具有属性和方法两项特性 对象的属性和方法通常被封装在一起,共同体现事物的特性, 二者相辅相承,不能分割,谁看见过只有“完好的零件和颜色”而不能开动的汽车?,从对象抽象出“类”,抽取出下列对象的属性和方

3、法的共同特征,轿车,顾客,类,顾客类 轿车类 ,类是模子,确定对象将会拥有的特征(属性)和行为(方法),类是对象的类型 不同于int类型:具有方法,各种口味的球状冰淇淋,球状冰淇淋模子,小结2,类和对象有什么区别呢? 类是抽象的概念,仅仅是模板,比如说:“人” 对象是一个你能够看得到、摸得着的具体实体,比如:“小布什”,小布什,普京,克林顿,Java 是面向对象的语言,所有Java程序都以类class为组织单元 关键字class定义自定义的数据类型,public class Hello public static void main(String args) System.out.printl

4、n(使用Java语言理解程序逻辑); ,Java类模板,类将现实世界中的概念模拟到计算机程序中,public class 类名 /定义属性部分 属性1的类型 属性1; 属性2的类型 属性2; 属性n的类型 属性n; /定义方法部分 方法1; 方法2; 方法m; ,定义类,定义一个类的步骤 1、定义类名 2、编写类的属性 3、编写类的方法,类示例2-1,用类的思想输出计算机培训中心信息,类示例2-2,public class AccpSchool /定义培训中心的属性 String schoolName; / 中心的全称 int classNum; /教室的数目 int labNum; /机房的

5、数目 / 定义培训中心的方法 public String toString() return schoolName + 培训ACCP学员 + n + 配备:+ classNum + 教 + labNum + 机; ,定义类的toString()方法, 用于输出类相关的信息,public String toString() return 字符串; /方法体 ,成员变量,常见错误,public class .Book String bookName; String authorName; int pageNum; boolean isAvailable; ,类命名规则: 1、不能使用Java关键字

6、 2、首字母可以为字母,也可以是“_”或“$ ”(建议不要这样) 3、不能包含空格或“.”号,代码错误,如何创建和使用对象,使用对象的步骤: 使用new创建类的一个对象 使用对象:使用“.”进行以下操作 给类的属性赋值:对象名.属性 调用类的方法:对象名.方法名(),AccpSchool center = new AccpSchool();,center.schoolName = 北京中心; /给属性赋值 center.toString(); /调用类的方法,该方法中的操作将被执行,public class InitialAccpSchool public static void main(S

7、tring args) AccpSchool center = new AccpSchool(); System.out.println(center); center.schoolName = 北京中心; center.classNum = 10; center.labNum = 10; System.out.println(center); ,创建和使用对象示例,创建“北京中心”对象,说一说看到什么效果?,调用类的toString()方法是特例:这里使用center.toString()和center作用相同 更简便,综合案例,编写学生类,输出学生相关信息 编写教员类,输出教员相关信息,小

8、结3,编写一个手机类,并编写测试类显示手机信息,为什么需要封装 2-1,编写一个类,代表教员,要求: 具有属性:姓名、年龄 具有行为:自我介绍 教师的最小年龄要求:22岁,public class Teacher1 public String name; / 教员姓名 public int age; /年龄 /* * 返回自我介绍的内容 */ public String introduction() return 大家好!我是 + name + ,我今年+ age+岁; ,为什么需要封装 2-2,编写一个测试类,要求: 实例化一个教员对象,并对其初始化 在控制台输出该教员的自我介绍,publi

9、c class Teacher1Test public static void main(String args) Teacher1 teacher = new Teacher1(); = 李芳; teacher.age =10; System.out.println(roduction(); ,要满足教员的最小年龄要求,可以通过对属性的封装来实现,什么是封装,public class Teacher2 private String name; / 教员姓名 / 返回教员姓名 public String getName() return name

10、; / 设定教员姓名 public void setName(String name) = name; ,封装,就是隐藏实现细节 将属性私有化,提供公有方法访问私有属性 通过这些公有方法访问私有属性,Teacher2 teacher = new Teacher2(); teacher.setName (李芳); String tName = teacher.getName();,通过setter、getter方法访问name属性,this代表当前类的实例,如何实现封装2-1,封装的实现: 1、修改属性的可见性来限制对属性的访问 2、为每个属性创建一对赋值(setter)方法

11、和取值(getter) 方法,用于对这些属性的访问 3、在setter和getter方法中,加入对属性的存取限制,public class Teacher3 private String name; / 教员姓名 private int age; /年龄 public int getAge() return age; public void setAge(int age) if (age22) System.out.println(错误!最小年龄应为22岁!); this.age = 22; /如果不符合年龄要求,则赋予默认值 else this.age = age; /此处省略对name属性

12、的setter、getter方法 ,1,2,3,如何实现封装2-2,public class Teacher3Test public static void main(String args) Teacher3 teacher = new Teacher3(); teacher.setName (李芳); teacher.setAge(10); System.out.println(roduction(); ,使用封装,增加了数据访问限制,增强了程序的可维护性,错误!最小年龄应为22岁! 大家好!我是李芳,我今年22岁,测试类通过调用setter方法,为对象的各个属性赋值

13、,小结 4,使用private关键字修饰某个成员变量后,这个成员变量可以被同一包中的其它类访问吗? 在Java程序中,代码封装带给我们的好处是什么?,小结5,请通过代码封装,实现如下需求: 编写一个类Book,代表教材: 具有属性:名称(title)、页数(pageNum),其中页数不能少于200页,否则输出错误信息,并赋予默认值200 为各属性设置赋值和取值方法 具有方法:detail,用来在控制台输出每本教材的名称和页数 编写测试类BookTest进行测试:为Book对象的属性赋予初始值,并调用Book对象的detail方法,看看输出是否正确,为什么需要构造方法 2-1,开发教员类Teac

14、her4,要求: 具有属性:姓名、年龄、学历、职位 具有行为:自我介绍,public class Teacher4 private String name; / 姓名 private int age; / 年龄 private String education; / 学历 private String position; / 职位 public String introduction() return 大家好!我是 + name + ,我今年” + age + 岁,学历“ +education+,目前职位是+position; public String getName() return na

15、me; public void setName(String myName) name = myName; / 以下是其他属性的setter、getter方法,此处省略 ,为什么需要构造方法 2-2,编写一个测试类,要求: 实例化一个教员对象,并对其初始化 在控制台输出该教员的自我介绍,public class Teacher4Test public static void main(String args) Teacher4 teacher = new Teacher4(); teacher.setName(李芳); teacher.setAge(23); teacher.setEducat

16、ion(本科); System.out.println(roduction(); ,要简化对象初始化的代码,可以通过构造方法来解决,大家好!我是李芳,我今年23岁,学历本科,目前职位是null,AccpTeacher4中有太多的属性及对应的setter方法,在初始化时,很容易就忘记了,有没有可能简化对象初始化的代码?,什么是构造方法,构造方法负责对象成员的初始化工作,为实例变量赋予合适的初始值 构造方法必须满足以下语法规则: 1、方法名与类名相同 2、没有返回类型,public class Teacher5 private String name; / 教员姓名 / 构造

17、方法 public Teacher5() name = 无名氏; ,public class Teacher5Test public static void main(String args) Teacher5 teacher = new Teacher5(); ,使用new关键字调用构造方法,带参数的构造方法 2-1,通过带参数的构造方法,显式地为实例变量赋予初始值,public class Teacher6 private String name; / 教员姓名 private int age; / 年龄 private String education; / 学历 private Str

18、ing position; / 职位 / 带参数的构造方法 public Teacher6(String pName,int pAge,String pEducation,String pPosition) name = pName; age = pAge; / 可以增加对age等属性的存取限制条件 education = pEducation; position = pPosition; public String introduction() return 大家好!我是 + name + ,我今年 + age + 岁,学历 + education + ,目前职位是+position; ,带

19、参数的构造方法 2-2,通过调用带参数的构造方法,简化对象初始化的代码,public class Teacher6Test public static void main(String args) Teacher6 teacher = new Teacher6(李芳, 23, 本科, 咨询师); System.out.println(roduction(); ,创建对象时,一并完成了对象成员的初始化工作,大家好!我是李芳,我今年23岁,学历本科,目前职位是咨询师,小结 6,编写一个类Book2,代表教材: 具有属性:名称(title)、页数(pageNum),其中页数不能

20、少于200页,否则输出错误信息,并赋予默认值200 具有方法: detail,用来在控制台输出每本教材的名称和页数。 具有带参数的构造方法:用来完成对象的初始化工作,并在构造方法中完成对页数的最小值限制 编写测试类Book2Test进行测试:初始化一个Book2对象,并调用该Book2对象的detail方法,看看输出是否正确,生活中的方法重载,类,方法,方法参数,方法实现,司机,轿车,巴士,火车,驾驶,启动、行驶、,等待乘客上车、启动、 行驶、到站停车、,正点发车、行驶、 到站停车、,如果用代码实现,我们需要三个方法,这些方法的方法名称相同,参数类型不同,方法重载的代码示例 1,方法重载并不陌

21、生 java.io.PrintStream类的println方法能够打印数据并换行,根据数据类型的不同,有多种实现方式,public class Test public static void main(String args) int i = 0; char c = z; String str = hello; System.out.println(i); System.out.println(c); System.out.println(str); ,PrintStream,println(int) println(char) println(String) ,方法名相同,参数类型不同,调

22、用不同的println方法,方法重载,方法重载的代码示例 2,java.lang.Math类的max()方法能够从两个数字中取出最大值,它有多种实现方式 运行时,Java虚拟机先判断给定参数的类型,然后决定到底执行哪个max()方法,public class Test public static void main(String args) Math.max(1,2); Math.max(1.0F,2.F); Math.max(1.0,2); ,方法重载,构造方法重载 2-1,构造方法重载是方法重载的典型示例,public class Teacher7 private String name;

23、 / 教员姓名 private String school = 北京中心; / 所在中心 public Teacher7(String name) = name; /设定教员姓名 public Teacher7(String name, String school) = name; /设定教员姓名 this.school = school; /设定教员的所在中心 public String introduction() return 大家好!我是 + school + 的 + name ; ,构造方法重载,构造方法重载 2-2,通过调用不同的构造方法来表

24、达对象的多种初始化行为 例如: 默认情况下,教师来自北京中心,初始化时,只需提供教员姓名 有时,需要提供所在中心名称及教员姓名,public class Teacher7Test public static void main(String args) Teacher7 teacher1 = new Teacher7(李芳); System.out.println(roduction(); Teacher7 teacher2 = new Teacher7(张欣, 天津中心); System.out.println(roduction(); ,大家

25、好!我是北京中心的李芳 大家好!我是天津中心的张欣,小结 7,编写一个类Book3,代表教材: 具有属性:名称(title)、页数(pageNum)、种类(type) 具有方法:detail,用来在控制台输出每本教材的名称、页数、种类 具有两个带参构造方法:第一个构造方法中,设置教材种类为“计算机”(固定),其余属性的值由参数给定;第二个构造方法中,所有属性的值都由参数给定 编写测试类Book3Test进行测试: 分别以两种方式完成对两个Book3对象的初始化工作,并分别调用它们的detail方法,看看输出是否正确,给定如下Java代码,请指出代码中的错误,并解释原因。,public clas

26、s Sample private int x; public Sample() x = 1; public Sample(int i) x = i; public int Sample(int i) x = i; return x+; private Sample(int i, String s) public Sample(String s,int i) private Sampla(int i) x=i+; private void Sampla(int i) x=i+; ,总结,无参构造方法,带参构造方法,不是构造方法,带参构造方法,带参构造方法,名称与类名不相同,不是构造方法,生活中的

27、继承 2-1,生活中,继承的例子随处可见,动物,食草动物,食肉动物,谁是父类? 谁是子类? 能说出继承的特点吗?,继承需要符合的关系:is-a,父类更通用、子类更具体,生活中的继承 2-2,子类具有父类的一般特性(包括属性和行为),以及自身特殊的特性,巴士是汽车吗? 卡车是汽车吗? 出租车是汽车吗?,汽车,请问:出租车包含哪些属性和行为呢?,为什么需要继承 4-1,开发ACCP教员类,其中教员分为Java教员以及.NET教员,各自的要求如下: Java教员 属性:姓名、所属中心 方法:授课(步骤:打开Eclipse、实施理论课授课)、自我介绍 .NET教员 属性:姓名、所属中心 方法:授课(步

28、骤:打开Visual studio 2005、实施理论课授课)、自我介绍,请问:以下这个解决方案中存在着什么问题?,为什么需要继承 4-2,代码存在重复,违背了“write once, only once”的原则,为什么需要继承 4-3,如何改进?有没有可能建立继承关系,让子类自动继承父类的属性和方法?,Java教员是教员吗? .NET教员是教员吗?,public class AccpTeacher private String name; / 教员姓名 private String school; / 所在中心 public AccpTeacher(String myName, String

29、 mySchool) name = myName; school = mySchool; public void giveLesson() System.out.println(知识点讲解); System.out.println(总结提问); public void introduction() System.out.println(大家好!我是“ + school + 的 + name + 。); ,现在,所有子类中相同的代码都抽取到父类中了,为什么需要继承 4-4,public class AccpJavaTeacher2 extends AccpTeacher public AccpJ

30、avaTeacher2(String myName, String mySchool) super(myName, mySchool); public void giveLesson() System.out.println(启动 Eclipse); super.giveLesson(); ,public class AccpDotNetTeacher2 extends AccpTeacher public AccpDotNetTeacher2(String myName, String mySchool) super(myName, mySchool); public void giveLe

31、sson() System.out.println(启动 Visual Studio .NET); super.giveLesson(); ,使用继承,可以有效实现代码复用,子类自动继承父类的属性和方法,子类中不再存在重复代码,如何实现继承 3-1,在Java语言中,用extends关键字来表示一个类继承了另一个类,例如:,public class AccpJavaTeacher2 extends AccpTeacher /其余代码省略 ,在父类中只定义一些通用的属性与方法,例如:,public class AccpTeacher private String name; / 教员姓名 pri

32、vate String school; / 所在中心 public AccpTeacher(String myName, String mySchool) /初始化属性值 public void giveLesson() /授课方法的具体实现 public void introduction() /自我介绍方法的具体实现 ,如何实现继承 3-2,子类自动继承父类的属性和方法,子类中可以定义特定的属性和方法,public class AccpTeacher private String name; / 教员姓名 private String school;/ 所在中心 public AccpTe

33、acher (String myName, String mySchool) /初始化属性值 public void giveLesson() /授课方法的具体实现 public void introduction() /自我介绍方法的具体实现 ,public class AccpJavaTeacher2 extends AccpTeacher public AccpJavaTeacher2(String myName, String mySchool) super(myName, mySchool); public void giveLesson() System.out.println(启

34、动Eclipse); super.giveLesson(); ,由于giveLesson()方法与父类的实现有所不同,因此重写了该方法,方法重写:子类和父类的方法具有相同的名称、参数列表、返回类型,父类中的属性和方法可以被子类继承,public class AccpJavaTeacher2 extends AccpTeacher public AccpJavaTeacher2(String myName, String mySchool) super(myName, mySchool); ,如何实现继承 3-3,子类的构造方法中,通过super关键字调用父类的构造方法,方法重写后,通过supe

35、r关键字调用父类的方法,public class AccpJavaTeacher2 extends AccpTeacher public void giveLesson() System.out.println(启动 Eclipse); super.giveLesson(); ,通过调用父类的构造方法,完成对属性值的初始化,一切类的“祖先”Object,在Java 中,所有的Java类都直接或间接地继承了java.lang.Object类,public class MyObject / ,public class MyObect extends Object / ,在Eclipse中调用MyO

36、bject对象的成员,会自动弹出继承自Object的所有方法,小结 8,请编码实现动物世界的继承关系: 动物(Animal)具有行为:吃(eat)、睡觉(sleep) 动物包括:兔子(Rabbit),老虎(Tiger) 这些动物吃的行为各不相同(兔子吃草,老虎吃肉);但睡觉的行为是一致的。 请通过继承实现以上需求,并编写测试类AnimalTest进行测试。,为什么需要多态 5-1,在ACCP教员类的基础上,开发一个类代表总部,负责对各教员进行评估,评估内容包括: 1、教员的自我介绍 2、教员的授课,为什么需要多态 5-2,public class HQ1 public void judge(A

37、ccpJavaTeacher2 t) roduction(); t.giveLesson(); public void judge(AccpDotNetTeacher2 t) roduction(); t.giveLesson(); public static void main(String args) HQ1 hq = new HQ1(); hq.judge(new AccpJavaTeacher2(李明,北京中心“); hq.judge(new AccpDotNetTeacher2(张明,天津中心“); ,第一种解决方案,大家好!我是北京中心的李明. 启动 Eclip

38、se 知识点讲解 总结提问 大家好!我是天津中心的张明. 启动 Visual Studio 2005 知识点讲解 总结提问,控制台输出,为什么需要多态 5-3,现在,升级ACCP教员类,增加一种新类型:AccpDBTeacher,该类型的教员专门负责教授数据库,要求如下: 属性:姓名、所属中心 方法:授课(启动Sql Server、实施理论课授课)、自我介绍 同时,总部也负责对这类教员进行评估,为什么需要多态 5-4,如果在第一种解决方案的基础上去解决,我们需要如下两个步骤: 建立AccpDBTeacher类 修改总部类,增加方法:judge(AccpDBTeacher t),每增加一种新的教

39、员类型,都要修改总部类,增加相应的judge(评估)方法,代码的可扩展性及可维护性极差,能找到这个解决方案的弊端吗?,为什么需要多态 5-5,第二种解决方案使用多态,public class HQ3 public void judge(AccpTeacher t) roduction(); t.giveLesson(); public static void main(String args) HQ3 hq = new HQ3(); hq.judge(new AccpJavaTeacher2(李明,北京中心“); hq.judge(new AccpDotNetTeacher2(张明,

40、天津中心); hq.judge(new AccpDBTeacher(“李岚,北京中心“); ,可以接收子类类型,根据实际创建的对象类型调用相应方法,大家好!我是北京中心的李明. 启动 Eclipse 知识点讲解 总结提问 大家好!我是天津中心的张明. 启动 Visual Studio 2005 知识点讲解 总结提问 大家好!我是北京中心的李岚. 启动 Sql Server 知识点讲解 总结提问,控制台输出,使用多态之后,当需要增加新的子类类型时,无需更改总部类,程序的可扩展性及可维护性增强,什么是多态,简单来说,多态是具有表现多种形态的能力的特征 同一个实现接口,使用不同的实例而执行不同操作,

41、彩色打印机,打印机,黑白打印机,打印效果:彩色,打印效果:黑白,打印,打印,public class AccpTeacher public void giveLesson() System.out.println(知识点讲解); System.out.println(总结提问); ,如何实现多态,1、子类重写父类的方法 2、编写方法时,使用父类定义的方法 3、运行时,根据实际创建的对象类型动态决定使用哪个方法,小结 9,请编码实现如下需求: 乐器(Instrument)分为:钢琴(Piano)、小提琴(Violin) 各种乐器的弹奏( play )方法各不相同。 编写一个测试类Instrume

42、ntTest,要求: 编写方法testPlay,对各种乐器进行弹奏测试。要依据乐器的不同,进行相应的弹奏。 在main方法中进行测试,总结 2-1,class Base public String name; public Base() name = Base; public Base(String pName) name = pName; public void method() System.out.println(name); ,class Child extends Base public Child() super(Child1); name=Child2; ,给定如下Java代码,

43、编译运行后,输出结果是什么?,public class Sample public static void main(String args) Child c = new Child(); c.method(); ,Child2,控制台输出,1,2,3,总结 2-2,给定如下Java代码,编译运行后,输出结果是什么?,public class AccpTeacher public void giveLesson() System.out.println(知识点讲解); ,public class AccpDBTeacher extends AccpTeacher public void giv

44、eLesson() System.out.println(启动 SqlServer); ,1,2,public class Test public static void main(String args) AccpTeacher t = new AccpDBTeacher (); t.giveLesson(); ,控制台输出,启动 SqlServer,为什么需要包,生活案例,文档分门别类,易于查找,不同内容的文档可以放在不同的 袋子中,拥有相同的名字,避免冲突,易于管理,允许类组成较小的单元(类似 文件夹),易于找到和使用相 应的文件,防止命名冲突,更好的保护类、数 据和方法,为什么需要包,

45、Java的系统程序包,如何创建包,package myjava.sg.chap3 ; public class School public String toString() ,包名,使用package声明包, 以分号结尾,如果有包的声明,一定 作为Java源代码的第一条 语句,包与目录的关系,创建包myjava.sg.chap3,即创建目录结构 .myjavasgchap3 ,包与文件夹同名。,myjava,sg,chap3,School.java,Hello.java,如何导入包,为了使用不在同一包中的类,需要在Java程序中使用import关键字导入这个类,import java.uti

46、l.*; /导入java.util包中所有类 import java.lang.*; /导入java.lang包中所有类,关键字import并不陌生,import 包名. 类名;,1、系统包(eg:java.lang) 2、自定义包:net.javagroup,*: 指包中的所有类 Hello:指包中的Hello类,文件1: MyClass1.java,文件2: MyClass2.java,文件3: Test.java,package Mypackage; public class MyClass1 public void show1( ) System.out.println(这是类MyCl

47、ass1); ,package Mypackage.Mypackage1; public class MyClass2 public void show2( ) System.out.println(这是类MyClass2); ,import Mypackage.*; import Mypackage.Mypackage1.*; public class Test public static void main(String args ) MyClass1 obj1=new MyClass1( ); obj1.show1( ); MyClass2 obj2=new MyClass2( ); o

48、bj2.show2( ); ,代码阅读,School.java位于myjavasgchap3中,Hello.java位于myjavademomypackage中,下面程序空缺部分需要填入代码吗?如果需要,是什么?,/添加代码2 /添加代码3 public class Hello public static void main(String args) School center = new School(); System.out.println(center); ,/添加代码1 public class School public String toString() return 这个是Sc

49、hool类; ,package myjava.sg.chap3;,package myjava.demo.mypackage;,import myjava.sg.chap3.School;,一旦类放入包中,包名和类名 共同组合才能描述一个类,这里java.lang.System;自动导入,生活中的接口,电脑主板上的PCI插槽的规范就类似于Java接口,声卡,显卡,网卡,每种卡的内部结构都不相同,可以把声卡、网卡、显卡都插在PCI插槽上,而不用担心哪个插槽是专门插哪个卡的,主板,Java接口的声明,一个Java接口是一些抽象方法和常量的集合,public interface PCI public

50、 void start(); public void stop();,这是Java接口,相当于主板上的PCI插槽的规范,public interface 接口名 extends 父接口名列表 public static final 类型 常量名=常量值; public abstract 返回值类型 方法名(参数列表); ,Java接口的实现,class SoundCard implements PCI public void start() System.out.println(Du du.); public void stop() System.out.println(Sound stop!

51、); ,Java接口中定义的方法在不同的地方被实现,可以具有完全不同的行为,class NetworkCard implements PCI public void start() System.out.println(Send.); public void stop() System.out.println(Network stop!); ,声卡、网卡都实现了PCI插槽的规范,但行为完全不同,修饰符 class 类名 extends 父类 implements 接口列表 ,Java接口的应用,public class Assembler public static void main(Str

52、ing args) PCI nc = new NetworkCard(); PCI sc = new SoundCard(); nc.start(); sc.start(); ,可以使用接口标识类型 运行时,根据实际创建的对象类型调用相应的方法实现,Du du. Send.,控制台输出,2,1,利用接口实现多重继承,利用接口,可以弥补了Java单一继承的弱点,用另一种方式实现多重继承。,public class MainBoard public void usePCICard(_ p) p.start(); p.stop(); ,public class Assembler public st

53、atic void main(String args) MainBoard mb=new MainBoard(); /在主板上插入网卡 /在主板上插入声卡 ,通过这个方法,主板上可以插入任意符合PCI插槽规范的卡,PCI nc=new NetworkCard(); mb.usePCICard(nc);,PCI sc=new SoundCard();mb.usePCICard(sc);,PCI,可以通过更换实现接口的类来更换系统的实现,接口作为参数,接口作为参数使用,传递的是实现接口的对象,public interface Introduce public String detail(); public void introduction() detail(); private void showMessage(); void speak(); ,Java接口中的方法不能是private,Java接口中不能有方法体实现,编译器会自动加上public修饰符,请指出下列Java代码中的错误。,为什么需要常量,生活中,一周有七天,如何用代码表示?,public class Week private int days = 7; public s

温馨提示

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

评论

0/150

提交评论