收藏 分销(赏)

java编程思想教案-复习大纲-PPT.ppt

上传人:a199****6536 文档编号:1600258 上传时间:2024-05-06 格式:PPT 页数:64 大小:1.89MB
下载 相关 举报
java编程思想教案-复习大纲-PPT.ppt_第1页
第1页 / 共64页
java编程思想教案-复习大纲-PPT.ppt_第2页
第2页 / 共64页
java编程思想教案-复习大纲-PPT.ppt_第3页
第3页 / 共64页
java编程思想教案-复习大纲-PPT.ppt_第4页
第4页 / 共64页
java编程思想教案-复习大纲-PPT.ppt_第5页
第5页 / 共64页
点击查看更多>>
资源描述

1、java编程思想教案-复习大纲Java程序设计考试范围程序设计考试范围第一章第二章第三章第四章第五章第六章第七章第八章第九章第十章第十一章第十四章第十五章XXXX2Java程序设计考试题型程序设计考试题型选择题共选择题共20分,每小题分,每小题2分分填空题(共填空题(共20分,每空分,每空2分)分)判断题(共判断题(共10分,每小题分,每小题2分)分)程序阅读题(共程序阅读题(共30分,分,4题题)编程题(编程题(20分分,1题题)3面向对象三大特征面向对象三大特征封装隐藏实现细节,使得代码模块化,简单拿来,简单拿去继承代码重用多态分离了“做什么”和“怎么做”45多态多态分离“做什么”(吃中午

2、饭)和“怎么做”(吃啥中午饭);消除类型之间的耦合关系;多态方法调用允许一种类型表现出与其他相似类型的区别区别这种区别根据方法行为的不同而表现出来;5JAVA运行运行*.java*.classjavacjava6源代码格式package包名;importjava.swing.*;;*能够导入swing目录下的所有文件但不包括子目录下的文件。假如要用到swing/event目录下的文件时,必须要加上importjava.swing.event.*才行。类定义方式:权限(可省略)static/final/abstract(可没有)class(必须有)类名(必须有)方法定义方式:权限(可省略)sta

3、tic/final/abstract(可没有)返回类型(必须有)方法名(必须有)(参数列表(可没有));7声明对象声明对象也叫实例化语法:类名对象名=new类名(参数列表)第一步:类名对象名,赋予对象引用;第二步:对象名=new类名(参数列表),获取该对象的一个实际物理副本并把它赋给那个变量;new为对象动态分配内存;一切都是引用用引用操作对象8大家学习辛苦了,还是要坚持继续保持安静继续保持安静9Java源代码(源代码(2)10Java的对象交换的对象交换变量:基本数据类型和对象形式参数:基本数据类型和对象11Java源代码(源代码(3)b1和b2指向同一个对象12Java源代码(源代码(4)

4、classEmployeeprivateintsalary=0;privateStringname;publicvoidEmployee(Stringname,intsalary)this.name=name;this.salary=salary;13Java源代码(源代码(5)14classSwap1intcount=0;publicclassTestForSwap1publicstaticvoidmain(Stringargs)Swap1s1=newSwap1();Swap1s2=newSwap1();s1.count=5;s2.count=10;System.out.println(s1

5、.count:+s1.count+and +s2.count:+s2.count);s1=s2;System.out.println(s1.count:+s1.count+and +s2.count:+s2.count);s2.count=30;System.out.println(s1.count:+s1.count+and +s2.count:+s2.count);s1.count:5ands2.count:10s1.count:10ands2.count:10s1.count:30ands2.count:3015x:10andy:20a:10andb:20a:20andb:20a:20a

6、ndb:20 x:10andy:20publicclassTestForSwap2voidswapF(inta,intb)System.out.println(a:+a+and+b:+b);a=b;System.out.println(a:+a+and+b:+b);intc=0;c=a;a=b;b=c;System.out.println(a:+a+and+b:+b);publicstaticvoidmain(Stringargs)TestForSwap2t2=newTestForSwap2();intx=10;inty=20;System.out.println(x:+x+and+y:+y)

7、;t2.swapF(x,y);System.out.println(x:+x+and+y:+y);16x:10andy:20a:10andb:20a:20andb:10 x:10andy:20publicclassTestForSwap3voidswapF(inta,intb)System.out.println(a:+a+and +b:+b);a=20;b=10;System.out.println(a:+a+and +b:+b);publicstaticvoidmain(Stringargs)TestForSwap3t2=newTestForSwap3();intx=10;inty=20;

8、System.out.println(x:+x+and +y:+y);t2.swapF(x,y);System.out.println(x:+x+and +y:+y);17s1:10ands2:20a:10andb:20a:20andb:20s1:10ands2:20classSwap2Intcount=0;publicclassTestForSwap4voidswapF(Swap2a,Swap2b)System.out.println(a:+a.count+and +b:+b.count);a=b;System.out.println(a:+a.count+and +b:+b.count);

9、publicstaticvoidmain(Stringargs)TestForSwap4t2=newTestForSwap4();Swap2s1=newSwap2();Swap2s2=newSwap2();s1.count=10;s2.count=20;System.out.println(s1:+s1.count+and +s2:+s2.count);t2.swapF(s1,s2);System.out.println(s1:+s1.count+and +s2:+s2.count);18s1:10ands2:20a:10andb:20a:20andb:20s1:20ands2:20class

10、Swap3Intcount=0;publicclassTestForSwap5voidswapF(Swap3a,Swap3b)System.out.println(a:+a.count+and +b:+b.count);a.count=b.count;System.out.println(a:+a.count+and +b:+b.count);publicstaticvoidmain(Stringargs)TestForSwap5t2=newTestForSwap5();Swap3s1=newSwap3();Swap3s2=newSwap3();s1.count=10;s2.count=20;

11、System.out.println(s1:+s1.count+and +s2:+s2.count);t2.swapF(s1,s2);System.out.println(s1:+s1.count+and +s2:+s2.count);19基本语法(基本语法(1-3)20基本语法(基本语法(1-4)21classBasepublicstaticvoidtest(Stringstr)str=A;publicstaticvoidmain(Stringargs)Stringstring=B;test(string);System.out.println(string);P412223抽象类/接口是提

12、取多种具有相似性的具体事物的共同特征而产生的,不是描述一类具体事物。24Super关键字关键字指代基类的数据或方法;基类和导出类有相同方法时;super.方法名()基类的构造器是有参的;Super();2526继承(继承(2)26static不用声明对象不用声明对象,仅通过类本身就能调用静态方法、静态域。仅通过类本身就能调用静态方法、静态域。27static+final意味着只占据一个不能改变的存储空间,变量名全部大写,并用下划线分割各个单词;private方法都隐式地指定为final。28访问权限控制访问权限控制publicprotected包权限private包权限关键字就是缺省;clas

13、sTestClass29访问权限控制(访问权限控制(2)Eclipse/JustText/TestForImport2.javaEclipse/TestForImport.java30类的种类类的种类继承基类vs导出类一个导出类能否extends多个基类?抽象类接口一个接口能否extends多个接口?一个类能否implements多个接口?31初始化初始化初始化顺序编译时先初始化主类的基类的静态定义(包括静态块),再初始化主类的;执行主类的main方法;声明主类对象先依次初始化主类的基类的非静态定义和构造器,再初始化主类的;声明其他类对象先依次初始化其他类的基类的静态定义、非静态定义和构造器,

14、再初始化其他类;323333重写(或覆盖重写(或覆盖overriding)与重载)与重载(overloading)重写基类与导出类方法的参数完全相同重载一个类中方法名一样,参数不一样?基类与导出类间有没有重载34重写(或覆盖重写(或覆盖overriding)与重载)与重载(overloading)(2)Eclipse/tij_code/TIJ4_CODE/reusing/Lisa.javapackagereusing;classLisaextendsHomerOverridevoiddoh(Milhousem)System.out.println();Overridechardoh(charc

15、)return(1);35前期绑定前期绑定v.s.后期绑定后期绑定绑定绑定:将一个方法调用同另一个方法主题关联起来;static方法和方法和final方法(方法(private方法属于方法属于final方法);方法);可以编写只与基类打交道的程序代码,即,发送消息给某可以编写只与基类打交道的程序代码,即,发送消息给某个对象,让该对象去断定该如何做事情;个对象,让该对象去断定该如何做事情;36内部类内部类一种特殊的继承关系;语法把类的定义置于外围类的里面;37局部内部类局部内部类定义在方法的作用域38局部内部类(局部内部类(2)39局部内部类(局部内部类(3)局部类不能用局部类不能用public

16、或或private访问说明符进行声明。访问说明符进行声明。它的作用域被限定在声明该局部类的块中。它的作用域被限定在声明该局部类的块中。局部类有个优势,即对外部世界可以完全地隐藏起来。局部类有个优势,即对外部世界可以完全地隐藏起来。不仅能访问它们外围类的域,不仅能访问它们外围类的域,还可以访问局部变量。还可以访问局部变量。40外围类的局部变量如果要被内部类使用,必须是外围类的局部变量如果要被内部类使用,必须是final变量。变量。41匿名内部类匿名内部类实例初始化实例初始化实现构造器效果实现构造器效果4243匿名内部类是否向上转型匿名内部类是否向上转型??43publicclassAnonymo

17、usConstructorpublicstaticBasegetBase(inti)returnnewBase(i)print(Insideinstanceinitializer);/构造器效果publicvoidf()print(Inanonymousf();44publicclassTestpublicstaticvoidmain(Stringargs)newTest().doSomeThing(1);publicvoiddoSomeThing(intattribute)newThread()publicvoidrun()doSystem.out.println(attribute);if

18、(attribute3)attribute+;while(attribute5);.start();45静态内部类静态内部类vs非静态内部类非静态内部类静态内部类(嵌套类)对象生成:new外围类.内部类();必须通过对象来访问外围类的数据;非静态内部类对象生成:外围类对象.new内部类();可以直接访问访问外围类的数据;4647内部类对象的创建内部类对象的创建?47484849内部类对象的创建内部类对象的创建内部类对象的创建内部类对象的创建必须先创建外部类对象外部类的方法同一个名称不能声明两个局部变量,或一个局部变量和一个实例变量;外部类.new495050内部类总结内部类总结一个内部类对象可

19、以访问创建它的外部类对象的内容,甚至包括私有变量!内部类具有属性一样的修饰符,所以可以像属性一样被封装成private;内部类的名称必须与所嵌套的类不同;静态内部类(嵌套类):要创建嵌套类的对象,并不需要其外围类的对象;静态内部类中可以定义静态或者非静态的成员。静态内部类只能访问外围类的静态成员(包括静态变量和静态方法),不能从嵌套类的对象中访问非静态的外围类对象(包括非静态变量和非静态方法)。51内部类总结(内部类总结(2)匿名内部类就是没有名字的内部类。什么情况下需要使用匿名内部类?如果满足下面的一些条件,使用匿名内部类是比较合适的:只用到类的一个实例。类在定义后马上用到。类非常小(SUN

20、推荐是在4行代码以下)给类命名并不会导致你的代码更容易被理解。方法内部类不可以用private,public,protected修饰,只能用final和abstract修饰;内部类可以定义为abstract。52内部类总结(内部类总结(3)在使用匿名内部类时,要记住以下几个原则:匿名内部类不能有构造方法。由于构造器的名字必须与类名相同,匿名类没有类名,所以,匿名类不能有构造器。匿名内部类不能定义任何静态成员、方法和类。匿名内部类不能是public,protected,private,static。只能创建匿名内部类的一个实例。一个匿名内部类一定是在new的后面,用其隐含实现一个接口或实现一个类

21、。因匿名内部类为局部内部类,所以局部内部类的所有限制都对其生效。5354内部类的继承内部类的继承/:innerclasses/InheritInner.javapackageinnerclasses;/*AddedbyEclipse.py*/Inheritinganinnerclass.classWithInnerclassInnerpublicclassInheritInnerextendsWithInner.Inner/!InheritInner()/WontcompileInheritInner(WithInnerwi)wi.super();publicstaticvoidmain(St

22、ringargs)WithInnerwi=newWithInner();InheritInnerii=newInheritInner(wi);/:5455内部类的覆盖内部类的覆盖/:innerclasses/BigEgg.java/Aninnerclasscannotbeoverridenlikeamethod.importstaticnet.mindview.util.Print.*;classEggprivateYolky;protectedclassYolkpublicYolk()print(Egg.Yolk();publicEgg()print(New Egg();y=newYolk(

23、);publicclassBigEggextendsEggpublicclassYolkpublicYolk()print(BigEgg.Yolk();publicstaticvoidmain(Stringargs)newBigEgg();内部类和外围类是两个独立个体,不内部类和外围类是两个独立个体,不存在内部类覆盖存在内部类覆盖NewEgg()Egg.Yolk()5556/:innerclasses/BigEgg2.javapackageinnerclasses;/*AddedbyEclipse.py*/Properinheritanceofaninnerclass.importstatic

24、net.mindview.util.Print.*;classEgg2protectedclassYolkpublicYolk()print(Egg2.Yolk();publicvoidf()print(Egg2.Yolk.f();privateYolky=newYolk();publicEgg2()print(New Egg2();publicvoidinsertYolk(Yolkyy)y=yy;publicvoidg()y.f();publicclassBigEgg2extendsEgg2publicclassYolkextendsEgg2.YolkpublicYolk()print(Bi

25、gEgg2.Yolk();publicvoidf()print(BigEgg2.Yolk.f();publicBigEgg2()insertYolk(newYolk();publicstaticvoidmain(Stringargs)Egg2e2=newBigEgg2();e2.g();/*Output:Egg2.Yolk()NewEgg2()Egg2.Yolk()BigEgg2.Yolk()BigEgg2.Yolk.f()声明主类对象声明主类对象先依次初始化主类的基先依次初始化主类的基类的非静态定义和构造类的非静态定义和构造器,再初始化主类的;器,再初始化主类的;5657内部类的作用内部类的

26、作用2.最根本的作用就是实现最根本的作用就是实现JAVA中的多继承中的多继承!Java只能继承一个类,它的多重继承在我们没有学习内部类之前是用接口来实现的。但使用接口有时候有很多不方便的地方。比如我们实现一个接口就必须重写它里面的所有方法。而有了内部类就不一样了。它可以使我们的类继承多个具体类或抽象类。1.内部类可以很好的实现隐藏内部类可以很好的实现隐藏一般的非内部类,是不允许有private与protected权限的,但内部类可以。3.可以避免修改接口而实现同一个类中两种同名方可以避免修改接口而实现同一个类中两种同名方法的调用。法的调用。如果类要继承一个类,还要实现一个接口,可是你继承的类和

27、接口里面有两个同名的方法怎么办?你怎么区分它们?这就需要我们的内部类了。5758很好的实现隐藏很好的实现隐藏接口packageinsidecategory;publicinterfaceIncrementablevoidincrement();具体类packageinsidecategory;publicclassExampleprivateclassInsideClassimplementsInterfaceTestpublicvoidtest()System.out.println(这是一个测试);publicInterfaceTestgetIn()returnnewInsideClass

28、();客户端程序packageinsidecategory;publicclassTestExamplepublicstaticvoidmain(Stringargs)Examplea=newExample();InterfaceTesta1=a.getIn();a1.test();从客户端程序只知道Example的getIn()方法能返回一个InterfaceTest实例,但并不知道这个实例是这么实现的。而且由于InsideClass是private的,所以如果不看服务器代码的话,根本看不到这个具体类的名字,所以说它可以很好的实现隐藏。5859实现实现JAVA中的多继承中的多继承类一pack

29、ageinsidecategory;publicclassExample1publicStringname()returnliutao;类二packageinsidecategory;publicclassExample2publicintage()return25;类三packageinsidecategory;publicclassMainExampleprivateclasstest1extendsExample1publicStringname()returnsuper.name();privateclasstest2extendsExample2publicintage()retur

30、nsuper.age();publicStringname()returnnewtest1().name();publicintage()returnnewtest2().age();publicstaticvoidmain(Stringargs)MainExamplemi=newMainExample();System.out.println(姓名:+mi.name();System.out.println(年龄:+mi.age();类三,里面分别实现了两个内部类test1,和test2,test1类又继承了Example1,test2继承了Example2,这样类三MainExample就

31、拥有了Example1和Example2的方法和属性,也就间接地实现了多继承。5960实现同一个类中两种同名方法的调用实现同一个类中两种同名方法的调用接口packageinsidecategory;publicinterfaceIncrementablevoidincrement();类MyIncrementpackageinsidecategory;publicclassMyIncrementpublicvoidincrement()System.out.println(Otherincrement();staticvoidf(MyIncrementf)f.increment();packa

32、geinsidecategory;publicclassCallee2extendsMyIncrementimplementsIncrementablepublicvoidincrement()/代码packageinsidecategory;publicclassCallee2extendsMyIncrementprivateinti=0;privatevoidincr()i+;System.out.println(i);privateclassClosureimplementsIncrementablepublicvoidincrement()incr();Incrementableget

33、CallbackReference()returnnewClosure();60持有对象持有对象如何保存一组对象容器类库两种类型Collection一个独立元素的序列,这些元素都服从一条或多条规则。Map一组成对的“键值对”对象,允许使用键来查找值。61/队列:先进先出队列:先进先出(FIFO)/优先队列:元素按照其自然顺序进行排序,优先队列:元素按照其自然顺序进行排序,或者根据构造队列时提供的或者根据构造队列时提供的Comparator进行排序进行排序可重复可重复数组。查询快,增删慢。数组。查询快,增删慢。线程安全,但效率很差线程安全,但效率很差(现实中基本不用现实中基本不用)会按照数字将元

34、素排列,为会按照数字将元素排列,为“可排序集合可排序集合”默认升序。默认升序。按二叉树排序按二叉树排序(效率非常高效率非常高);按按Comparable接口的接口的compareTo()比较是否重复比较是否重复/栈,后进先出栈,后进先出(LIFO)62Map63持有对象小结持有对象小结存放元素存放元素存放顺序存放顺序元素可否重复元素可否重复遍历方式遍历方式排序方式排序方式各自实现类各自实现类ListObject有序有序可可迭代迭代(2)ArrayList,TreeSetSetObject无序无序不可不可迭代迭代SortedSetHashSetSortedSetObject无序无序不可不可迭代迭

35、代已排序已排序TreeSetMap(1)Key无序无序Key不可不可,value可可对对Key迭代迭代SortedMapHashMapSortedMap(1)无序无序,有排序有排序Key不可不可,value可可对对Key迭代迭代已对键值排序已对键值排序TreeMap(1)Object(key)Object(value);(2)Collections.sort();注:以上有序的意思是指输出的顺序与输入元素的顺序一致HashSet、HashMap通过hashCode(),equals()来判断重复元素在java中指定排序规则的方式只有两种:1、实现java.util包下的Comparator接口2、实现java.lang包下的Comparable接口64

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服