1、前言:很高兴在本学期再次听邢老师课,当然也很遗憾本学期将要完整的结束了,在这里再次感谢邢老师在课堂上授课。在即将学期结束的有限时间内,我写下了老师在课堂上讲的关于 Java重点知识总结,并且在最后又对继承、多态的相关知识进行了详细总结。Lets Begin! 班级:1320541姓名:刘创学号:1320541372016 年 6 月 22 日星期三第一章:Java 系列环境概述主要简单介绍了 Java 环境的安装、配置,以及第一个 Java 程序的设计、编译、运行等。重点介绍了 Java applet 程序的建立与运行。第二章:Java 语言基础1. Java 符号集 :标识符、关键字、运算符
2、、分隔符、常量(注意:标识符只能是字母(AZ ,a z)、数字(09) 、下划线 ()组成的字符串,并且其第一个字符必须是字母或下划线。 )2. 标识符的命名规则3. 数据类型、常量、变量原始数据类型:boolean,byte,in,char,long,short,double,float引用数据类型:数组,类, 接口4. 表达式和语句表达式一般按运算符来分:1) 算术表达式(float x=8.3f、i+)2) 关系表达式(37、34)Int width; 类的属性,静态特征 rectangle 类Int area(int l,int w)Return (length*width); 类的方
3、法(动态特征);Rectangle rec = new Rectangle();/创建对象Rec.area(30,20);/引用方法求出对象的面积2. 封装机制类的修饰符:无修饰符、public 修饰符、final、abstract3. 数据成员1) 数据成员的声明2) 数据成员的修饰符:static3) 静态数据成员的使用、初始化4) 用 final 修饰的最终成员4. 成员方法第五章:消息、继承、多态1. 消息 2. 访问控制 public、protected、friendly、private3. 多态机制4. 继承机制5. 抽象类、接口与包【注意:关于本章的知识将在后面详细展开介绍】第六
4、章:数组1. 一维数组 一维数组的声明:int a;/声明 a 的一维整形数组Int a;a=new int9;2. 一维数组引用举例 3. 关于二维数组的声明、初始化和引用二维数组的定义type arrayName ;type arrayName;二维数组的初始化1.静态初始化int intArray =1,2,2,3,3,4,5;Java 语言中,由于把二维数组看作是数组的数组,数组空间不是连续分配的,所以不要求二维数组每一维的大小相同。2.动态初始化1) 直接为每一维分配空间,格式如下:arrayName = new typearrayLength1arrayLength2;int a
5、= new int23;2) 从最高维开始,分别为每一维分配空间:arrayName = new typearrayLength1 ;arrayName0 = new typearrayLength20;arrayName1 = new typearrayLength21;arrayNamearrayLength1-1 = new typearrayLength2n;3) 例:二维简单数据类型数组的动态初始化如下:int a = new int2 ;a0 = new int3;a1 = new int5;对二维复合数据类型的数组,必须现金网 96y.org 首先为最高维分配引用空间,然后再顺次
6、为低维分配空间。而且,必须为每个数组元素单独分配空间。例如:String s = new String2 ;s0= new String2;/为最高维分配引用空间s1= new String2; /为最高维分配引用空间s00= new String(Good);/ 为每个数组元素单独分配空间s01= new String(Luck);/ 为每个数组元素单独分配空间s10= new String(to);/ 为每个数组元素单独分配空间s11= new String(You);/ 为每个数组元素单独分配空间二维数组元素的引用对二维数组中的每个元素,引用方式为:arrayNameindex1inde
7、x2例如:num10;二维数组举例:两个矩阵相乘public class MatrixMultiplypublic static void main(String args)int i,j,k;int a=new int 23; /动态初始化一个二维数组int b=1,5,2,8,5,9,10,-3,2,7,-5,-18;/静态初始化一个二维数组int c=new int24; /动态初始化一个二维数组for (i=0;i2;i+)for (j=0; j3 ;j+)aij=(i+1)*(j+2);for (i=0;i2;i+)for (j=0;j4;j+)cij=0;for(k=0;k3;k+
8、)cij+=aik*bkj;System.out.println(*Matrix C*);/打印 Matrix C 标记for(i=0;i2;i+)for (j=0;j4;j+)System.out.println(cij+ );System.out.println();第七章:字符串类1. String 类String c1=”java”;string 类的构造方法、字符串的比较、字符串的操作、main 方法中传递的字符串等2. Stringbuffer 类 追加方法 append()方法 、insert()方法、setcharat()方法等第八章:集合类1. 线性结构的简介 线性表、栈、队
9、列2. 集合与集合框架 set、 list、map、queue3. Collection 接口 iteration 迭代器4. List 接口与实现类 arraylist、linklist5. Set 接口6. Map 接口7. Collection 算法类 addall()方法、sort()方法、reserve()方法第九章:文字与图形 GUI 设计1. Gui 设计概述 swing 的组件、控制 applet 运行状态的基本方法、japplet 类、graphics2d 对象2. 绘制文字 font 类3. Color 类 设置文字背景等的颜色4. 绘制形状图形 1) 绘制线段与矩形2)
10、绘制椭圆、圆及弧3) 绘制多边形第十章:常用组件 GUI 设计1. 布局管理器1) Borderlayout2) Flowlayout3) Cardlayout4) Gridlayout5) Boxlayout2. 窗口与面板容器1) Jframe 容器2) Jpanel 容器3. 事件响应原理1) 委托事件模型2) Java.awt.event 事件类的继续关系3) 事件与事件源的关系4) Swing 中的事件与事件监听器4. Jabel 组件5. Jbutton 组件与 jtohhlebutton 组件 actionEvent 事件及其响应6. Jcheckbox 和 jradiobutt
11、on 组件7. Jcombox 组件8. Jlist 组件9. Jtextfield 与 jtextarea 组件第十一章:高级组件 GUI 设计1. 事件适配器适配类 中文名称 接口Componentadapter 组件适配器 CompoentlistenerComtaineradapter 容器适配器 ContainerlistenerrFoucusadapter 焦点适配器 FocuslistenerKeyadapter 键盘适配器 KeylistenerMouseadapter 鼠标适配器 MouselistenerMousemotionlistenerMousewheellisten
12、erMousemotionadapter 鼠标运动适配器 MousemotionlistenerWindowadapter 窗口适配器 WindowfocuslistenerWindowlistenerWindowstatelistener2. Keyevent 事件及其响应 3. Mouseevent 事件及其响应4. Windowevent 事件及其响应5. Jscrollpane 与 jsrollbar 组件6. Jtabbedpane 容器7. 菜单的设计8. 对话框的设计第十二章:异常处理1. Java 异常处理机制异常类层次图:java.lang.Objectjava.lang.T
13、hrowablejava.lang.Exceptionjava.lang.RuntimeExceptionjava.lang.Error java.lang.ThreadDeath2. Java 异常处理语句 try、catch 、finally 、throw 、throwstry 程序代码catch(异常类型 1 异常的变量名 1) 程序代码catch(异常类型 2 异常的变量名 2)程序代码 finally 程序代码第十三章:多线程1. Java 中的多线程实现技术线程的生命周期:新生、就绪、运行、阻塞、死亡2. 多线程的管理 线程调度、线程优先级还有其他输入输出、jdbc 连接数据库等知
14、识。关于 java 继承、多态的详细总结一、 继承:继承就是在一个现有类型的基础上,通过增加新的方法或者重定义已有方法的方式,产生一个新的类型。继承是面向对 象的三个基本特征-封装、继承、多态的其中之一,我们在使用 java 时编写的每一个类都是在继承,因为在 java语言 中,java.lang.object 类是所有类最根本的基类(或者叫父类、超类) ,如果我们新定义的一个类没有明确地指定继承自哪个基类,那么 java 就会默认为它是继承自 object 类的。可以把 java 中的类分为以下三种:1. 普通类:使用 class 定义且不含有抽象方法的类。2. 抽象类:使用 abstrac
15、t class 定义的类,它可以含有,也可以不含有抽象方法。3. 接口类:使用 interface 定义的类。在这三种类型之间存在下面的继承规律:普通类可以继承(extends)普通类,可以继承(extends)抽象类,可以继承(implements)接口。抽象类可以继承(extends)普通类,可以继承(extends)抽象类,可以继承(implements)接口。接口只能继承(extends)接口。一个普通类继承一个接 口后,必须这个接口中定义的所有方法,否则就只能被定义为抽象类。我在这里之所以没有对 implements 关键字使用“实现”这种说法是因为从概念上来 说它也是表示一种继承关
16、系,而且对于抽象类 implements接口的情况下,它并不是一定要实现这个接口定义的任何方法,因此使用继承的说法更为合理一 些。以上三条规律同时遵守下面这些约束:1. 普通类和抽象类都只能最多继承一个普通类,或者最多继承一个抽象类,并且这两种情况是互斥的,也就是说它们要么继承一个普通类,要么继承一个抽象类。2. 普通类、抽象类和接口在继承接口时,不受数量的约束,理论上可以继承无限多个接口。当然,对于普通类来说,它必须实现它所继承的所有接口中定义的全部方法。 继承给我们的编程带来的好处就是对原有类的复用(重用) 。就像模块的复用一样,类的复用可以提高我们的开发效率,实际上,模块的复用是大量类的
17、复用叠加后 的效果。除了继承之外,我们还可以使用组合的方式来复用类。所谓组合就是把原有类定义为新类的一个属性,通过在新类中调用原有类的方法来实现复用。如果新 定义的类型与原有类型之间不存在被包含的关系,也就是说,从抽象概念上来讲,新定义类型所代表的事物并不是原有类型所代表事物的一种,比如黄种人是人类的 一种,它们之间存在包含与被包含的关系,那么这时组合就是实现复用更好的选择。下面这个例子就是组合方式的一个简单示例:Java 继承代码举例class A . public String show(D obj) return (“A and D“); public String show(A obj
18、) return (“A and A“); class B extends A. public String show(B obj) return (“B and B“); public String show(A obj) return (“B and A“); class C extends B class D extends B使用继承和组合复用原有的类,都是一种增量式的开发模式,这种方式带来的好处是不需要修改原有的代码,因此不会给原有代码带来新的错误,也不用因为对原有代码的修改而重新进行测试,这对我们的开发显然是有益的。因此,如果我们是在维护或者改造一个原有的系统或模块,尤其是对它们的
19、了解不是很透彻的时候, 就可以选择增量开发的模式,这不仅可以大大提高我们的开发效率,也可以规避由于对原有代码的修改而带来的风险。自己对 java 中的深刻理解:这种技术使得复用以前的代码非常容易,能够大大缩短开发周期,降低开发费用。比如可以分隔符先定义一个类叫车,车有以下属性:车体大小,颜色,方向盘,轮胎,而又由车这个类派生出轿车和卡车两个类,为轿车添加一个小后备箱,而为卡车添加一个大货箱。二、 多态多态是同一个行为具有多个不同表现形式或形态的能力。多态是面向对象的重要特性,简单点说:“一个接口,多种实现 ”,就是同一种事物表现出的多种形态。 编程其实就是一个将具体世界进行抽象化的过程,多态就
20、是抽象化的一种体现,把一系列具体事物的共同点抽象出来, 再通过这个抽象的事物, 与不同的具体事物进行对话。 对不同类的对象发出相同的消息将会有不同的行为。 举例说明:比如我们说“宠物”这个对象,它就有很多不同的表达或实现,比如有小猫、小狗、蜥蜴等等。那么我到宠物店说“请给我一只宠物” ,服务员给我小猫、小狗或者蜥蜴都可以,我们就说“宠物”这个对象就具备多态性。 再回想一下经理和职员的关系,经理类具有父类职员类的所有属性、成员和方法。这就是说,任何在 Employee 上的合法操作在 Manager 上也合法。如果 Employee 有 raiseSalary()和 fire()两个方法,那么
21、Manager 类也有。在这种Manager 继承 Employee 的情况下,一个 Employee 既可以是一个普通的 Employee 类,也可以是一个 Manager 类。也就是说下述表示都是对的: Employee e = new Employee(); Employee e = new Manager(); 从上面可以看到:同一个行为 Employee 具有多个不同的表现形式(既可以是一个普通的 Employee 类,也可以是一个 Manager 类) ,这就被称为多态。 注意:方法没有多态的说法,严格说多态是类的特性。但是也有对方法说多态的,了解一下比如前面学到的方法覆盖称为动态
22、多态,是一个运行时问题;方法重载称为静态多态, 是一个编译时问题。 多态与类型 一个对象只有一个格式(是在构造时给它的) 。但是,既然变量能指向不同格式的对象, 那么变量就是多态性的。也就是说一个对象只有一种形式,但一个变量却有多种不同形式。 象大多数面向对象语言一样,Java 实际上允许父类类型的引用变量指向一个子类的对象。因此,可以说: Employee e = new Manager() 使用变量 e 是因为,你能访问的对象部分只是 Employee 的一个部分;Manager 的特殊部分是隐藏的。这是因为编译者应意识到,e 是一个 Employee,而不是一个 Manager。因而,下
23、述情况是不允许的: e.department = “ Finance “ ; /非法的,编译时会出错 可能有的人会不理解,为什么明明是 new 的一个 Manager,却不能访问 Manager 的属性数据。原因在于编译的时候,变量 e 是一个 Employee 的类型,编译器并不去管运行时 e 指向的具体对象是一个 Employee 的对象,还是一个 Manager 的对象,所以它只能访问到 Employee 里面定义的属性和方法。所以说编译时看数据类型。 那么要想访问到 Manager 里面的 department 该怎么办呢?这就需要先对 e 进行强制类型转换,把它还原成为 Manage
24、r 类型,就可以访问到 Manager 里面的属性和方法了,如下: Employee e = new Manager(); Manager m = (Manager)e; m.department = “开发部“; /这就是合法的了多态的作用: 1. 应用程序不必为每一个派生类编写功能调用,只需要对抽象基类进行处理即可。大大提高程序的可复用性。2. 派生类的功能可以被基类的方法或引用变量所调用,这叫向后兼容,可以提高可扩充性和可维护性。多态的经典代码举例:class Parent private String name = “parent“; public String getName() r
25、eturn this.name; public void doSomething(Parent obj) /输出类名 System.out.println(obj.getName(); public static void main(String args) Parent objP = new Parent(); objP.doSomething(new A();/ 传递 A 的引用,则调用的是 A 类的 getName 方法objP.doSomething(new B();/ 传递 B 的引用,则调用的是 B 类的 getName 方法 class A extends Parent private String name = “class A“; /重写 getName()方法 public String getName() return this.name; class B extends Parent private String name = “class B“; /重写 getName()方法 public String getName() return this.name; 对以上代码进行分析:父类的 doSomething 方法多态地调用了我们传递的对象的 getName 方法,而不是 Parent 类本身的 getName 方法,这就是多态给我们带来的方便。