




已阅读5页,还剩29页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
JAVA面向对象面向对象编程三本基本特点:封装 继承 多态Object Oriented Programmingoop 面向对象编程面向对象编程思想中有两个非常重要的概念,类,对象一 类所谓的类,就是 类型,数据类型,相对于我们学的基本数据类型,包含的内容要更丰富类似于c#中的struct。我们可以根据需求自己定义数据类型【类】。class 类名 /成员变量 属性 数类型名 变量名1; 数类型名 变量名2; 数类型名 变量名3;/成员方法 行为方法的返回值类型 方法名1(必要的参数) 方法的返回值类型 方法名2(必要的参数) .二 对象类类型的变量就是对象 类名 变量名=new 类名();该变量名即为对象 因为该对象是属于某个类,所以,变量名点点可以调出该类的所有内容 每个对象拥有自己的成员变量和成员方法三 关于设计类需要注意1 Java是面向对象编程语言,所有的内容必须都放在一个类里面 2 每个文件可以有多个类,但只能有一个类是public,并且文件名必须和 public类的类名一样。jvm会为每个类生成一个字节码文件*.class 最好一个文件一个类。3 通常会把main函数放在一个单独的类里面,作为整个项目的启动类4 成员变量如果不赋值有默认值,对数值类型默认值是0,boolean类型默认值为 false,对于所有的类类型默认值为null 对于局部变量没有默认值,需赋值后才可以使用*方法的重载和构造方法一 方法的重载method overload在一个类中定义多个方法名相同,参数不同的方法。这些方法之间就构成了重载 不能根据方法的返回值区分不同的方法二 构造方法 在一个类中定义 方法名和类名相同,并且该方法没有返回值,也不能放void。这样的方法就叫构造方法1 构建一个类的对象时候(new ),一定会调用构造方法2 一个类一定有构造方法,如果不明确设置则系统会为我们提供给一个无参的构造方法,如果明确定义构造方法,则系统就不会为我们提供构造方法。3 构造方法也支持方法的重载,即一个类中可以有多个构造方法。4 构造方法中一般放一些初始化的操作5 构造方法之间可以互相调用 this(必要的参数); 注意 该语句必须是构造方法的第一条语句*this使用、访问修饰符、数据类型一 this使用 this:表示当前这个类的一个引用【对象】。 1 当局部变量【在方法里面定义的变量包括形参】和成员变量【在方法外定义的变量】同名的时候,在方法中局部变量会覆盖掉 成员变量,如果想使用成员变量必须用 this.变量名 这种方式 2 构造方法之间可以互相调用 方法是在构造方法的第一条语句中加 this(必要的参数) 二 访问修饰符 控制类里面的成员变量或成员方法能在那里被访问 在java中一共有四种访问修饰符 默认 private protected public 1 private 私用的 可以用在成员变量或成员方法前表示该变量或方法只能被当前的类所访问 2 public 公有的 可以用在成员变量或成员方法前表示该变量或方法能被所有的类所访问3 在设计一个类的时候,通常成员变量都是private,成员方法都是public 如果在类的外面想使用成员变量则必须提供对应的公有的方法public 成员变量的数据类型 getXxx() return xxx; public void setXxx(成员变量的数据类型 xxx) this.Xxx=xxx; 这样的做的理由有三个 3.1 可以设置成员变量是只读,只写等访问权限 3.2 可以控制为成员变量付一些合法期望的值 3.3 这样的成员变量有一些特殊的功能javabean【后面会讲】三 数据类型java中的数据类型分两种 一种基本数据类型【8种】 一种是引用数据类型【类】 类:分两种,一种是系统给我们提供的类,第二种根据需求自己定义的类。但是无论使用那一种类 语法和含义都是一样的。 都是new出来,都要产生对象。系统给我们提供的类大约有四千左右,并且随着jdk版本的跟新,系统中的类越来越多,以满足我们的开发需求。为了方便使用这些类,系统中的所有类都分门别类的放在不同的包【和操作系统中的文件夹类似】中。比如 所有有关图像界面的类都放在java.awt.* javax.swing.*所有常见的工具类都放在java.util.*,比如所有文件操作用到的类都放在 java.io.*;*栈与堆、产生一个对象、java中方法调用、java的垃圾自动回收一 栈(stack)与堆(heap) 都是指的内存,但是这两块内存存储数据的性能是不一样。 1 栈空间(stack) 存储在栈空间的数据,处理速度比堆空间处理速度快,仅次于寄存器的处理速度。但是存储在栈空间的数据大小和生存期必须是 已知的,缺乏灵活性 2 堆空间(heap) 存储在堆空间的数据,处理速度比栈空间处理速度慢,。但是存储在堆空间的数据大小和生存期不需要已知,所以灵活性要高栈和堆空间都是jvm自动管理,不能通过程序干预。所有基本数据类型数据【8种】都是直接被存储在栈空间中。所有的引用数据类型 数据都存储在两个地方,产生的对象(new出来的)被存储在堆空间中,把代表该对象的一个地址存储在栈空间中。 二产生一个对象的具体操作 int x=1; Person ps=new Person(); 1 调用构造方法 2 在堆空间中构建该对象new Person() 3 把代表该对象的地址放在栈空间中【即变量名ps】 ps:引用 地址 句柄三 java中方法调用1 传数值调用 如果方法的形参是基本数据类型【8种】,属于传数值调用。在被调方法中不会改变主调方法的实参值2 传地址调用 如果方法的形参是引用数据类型【类 new】,属于传地址调用。在被调方法中会改变主调方法的实参值四 java的垃圾自动回收垃圾:指的的对象,没有任何句柄指向的对象就叫垃圾 jvm会在必要的时候清除这些无用的垃圾对象,一个对象被jvm清除时候会自动调用一个方法,该方法叫 析构方法 该方法叫 finalize()也可以明确让jvm清除系统中的垃圾对象System.gc();*匿名对象、static静态的一匿名对象没有句柄引用的对象叫匿名对象 比如 new Person(); new Person().print();二 static 静态的用在成员变量或成语方法前,表示该变量或方法属于这个类特有的,而不具体属于某个对象,即 无论是否产生对象,无论产生多少对象,在内存中都只有一个static的变量或方法 注意 1 访问静态的内容 对象名.静态内容; 类名.静态内容;/建议这样访问 2 static内容不属于面向对象的范畴,因为它不需要产生对象就能使用。 3 如果一个方法不需要访问成员变量或其它的成员方法,为了方便调用 可以把方法设置成静态的 如果一个成员变量的值是固定的【常量】,或者成员变量在任意一个对象值都一样,则可以把该变量设置成 static 4 在static方法中不能直接使用成员变量或成员方法,只能直接使用static的变量或方法。反之不然 在成员方法中可以直接使用static变量或方法 *继承一 产生一个类对象的 执行流程1 把类文件*.class 加载到内存中2 定义出所有的类【static】变量3 定义出所有的成员变量4 调用构造方法5 把对象在堆空间的首地址,付给栈空间的变量Person ps=new Person();二 继承在原有类的基础上设计一个新类的过程就叫继承,引入继承后,类和类之间就具有一些层次关系,这种层次关系能增加程序的灵活性。class 类A extends 类B 类A:子类,基类 类B:父类,超类 注意 1 java里面只支持单继承,即一个类只能有一个父类,但是一个类可以有多个子类。 2 java中,为所有的类设计祖先了Object,即所有的类都是Object类的直接或间接子类。 3 private内容,构造方法,不被继承 4 在子类的构造方法中,一定会调用父类的构造方法,如果不明确调用,则系统会自动调用父类无参的构造方法,如果父类没有无参数的构造方法,程序会发生错误。也可以利用 super(必要的参数);明确调用父类的某一个构造方法,这时系统将不会再调用父类无参数构造方法。 5 super用法 this:表示当前类的一个引用 super:表示父类的一个引用 super有两种情况必须使用super 5.1 super(必要的参数),在子类的构造方法中调用父类的构造方法 注意 必须是第一条语句 5.2 当子类和父类定义了同名的成员变量或成员方法,在子类中如果想访问父类的内容必须用 super.变量或super.方法 6 方法的复写 override方法的重载 overload 在子类中定义和父类方法名相同 参数相同 返回值也相同的方法 就构成了方法的复写 7 判断是否能使用继承的标准时 ,看两个类之间在逻辑上是否满足is-a 是一个 *数据类型转换、多态 一 数据类型转换 1 基本数据类型之间转换 1.1 自动转换 double x=2+a; 1.2 强制转换 int x=(int)1.5; 2 引用数据类型之间的转换 Person p1=new Person(); Person p2=p1; 2.1 自动转换 两个类之间如果具有继承关系,子类对象付给父类的变量如果 class Student extends Person Student st=new Student(); Person ps=st;/Student is-a ok Person ps=new Student() /ok Student st1=new Person(); /err class Employee extends Person Person ps=new Employee(); /ok Employee e=new Employee(); 2.2 强制转换 如果一个父类的变量【引用】中存储的是某个子类的对象,则可以把该变量强制转换成该子类的数据类型 ,以调用子类里面更多的功能。 如果父类中存储的不是子类对象 则转换时 编译不报错,运行时候报错。 Person ps=new Student(); (Student)ps).study(); 值 instanceof 类名接口名 如果值属于该类或值实现了该接口 则返回true 否则返回false二 多态(polymorphism)字面意思:多种状态,一个父类的变量可以付其任意子类的对象,在运行时候,可以自动匹配调用 对应子类对象里面的相应方法。这种思想可以为我们编程带来如下好处 1 不必为某个具体的子类编写方法调用,以不变应万变 2 可以提前调用某个子类的方法,增加了程序的可扩充性 *final、异常一 final关键字的使用 最终的,不变的1 用在局部变量前面该变量只能付一次值,付完后改值将不能被改变了包括形式参数也可以使用final。2 用在成员变量前,表示该变量只能付一次值,要么在定义的时候赋值要么在所有的构造方法中赋值 .如果成员变量是static的,必须定义同时初始化该final变量的值 public static final 类型的常量名 建议每个字母都大写3 用在方法前 表示该方法不能被复写 override4 用在类前面 表示该类不能被继承String 类是final的 不能被继承 一个final类中的所有方法默认都是final的 abstract类不能是final的 二 异常 程序在运行的时候发生的一些非致命的错误,叫异常。 处理异常的执行原理 java中针对每种错误定义一个类描述,程序运行过程中,一旦发生了某种错误,jvm会自动产生该种错误类的对象抛出来,如果有catch语句捕获该对象,则程序会进入catch语句执行相应处理代码,执行完毕后继续向下运行。如果没有catch语句捕获该对象程序将立刻意外终止。 因为所有的异常类都是Exception的子类 所以异常类名 都是 *Exception 常见的异常类 NullPointerExeption空指针异常 表示没有new一个对象就点点调用类里面的内容 ArrayIndexOutOfBoundsException 数组下表越界 ArithmeticException 算术异常 NumberFormatException 字符串转换成数值失败异常 所有的异常类都有两个常用的方法 getMessage() 返回一个字符串表示发生异常的原因 printStackTrace() 直接输出发生异常的详细信息 处理异常的形式 1 try /这里不要放任何内容 catch(Exception ex) 2 try catch(*Exception ex) catch(*Exception ex) . 对每个具体的异常分别处理 可以这样 3 try catch(Exception ex) . finally /无论是否发生异常 这里都会被执行 只有前面执行System.exit(0);finally才不被执行 否则一定被执行 4 try finally /无论是否发生异常 这里都会被执行 只有前面执行System.exit(0);finally才不被执行 否则一定被执行 *包 一 Java中的包包目的是管理类,有两个原因 1 解决了类同名冲突 2 可以把不同类进行分门别类的放在不同的包里,方便使用。 二 如何为某个类起包名 包名命名规范: 1 所有的字母都小写 2 sun建议把域名倒过来做包名 com.hygj.wzm.view com.hygj.hygj.wzm.db com.htity .wzm.en 3 包名会作为存储class文件的目录名.相当与/比如 com.hygj.wzm.view com/hygj/wzm/view三 把某个类做在一个包里1 在定义类前面 package com.hygj.db; 2 如果一个类属于某个包则该类必须存储在 包所对应的目录下 com/hygj/db 3 包名将作为类名的一部分 com.hygj.db.A 可以借助import 导入类所在的包, 如果多个包中有同名的类,类必须明确加包名限制 注意: 通常我们会为类明确起个包名。系统中所有的了类都有包名。四 访问权限-类有两种 1 定义类前加public表示该类在所有的包中都可以访问,并且文件名和类名必须一致所以一个文件只能有一个public类 2 定义类前不加public 表示该类只能在同一个包中访问。 通常定义一个类前都加public ,通常一个文件只放一个类五 访问权限-类里面的成员变量 或成员方法 在Java中有四种访问权限 private缺省的protectedpublic 在同一个类中 是 是 是 是 在同包不同类中 否 是 是 是 在不同包子类中 否 否 是 是 在不同包非子类 否 否 否 是 六 系统的中jar包 可以把多个类 ,或包 做成一个压缩文件 *.jar 系统中的所有类的源代码 C:Program FilesJavajdk1.6.0_07src.zip 系统中所有类对应的class文件 C:Program FilesJavajdk1.6.0_07jrelibrt.jar*抽象方法、抽象类、接口一 抽象方法 没有实现的方法,只有方法声明,没有方法体的方法叫abstract抽象方法 public abstract 方法的返回值类型(方法的参数列表); 访问权限通常都是public 不能是pri
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 成套技术员考试题及答案
- 新质生产力与锂电产业融合
- 环境整改方案
- 高新区新质生产力案例
- 教育领域新质生产力的内容
- 北大荒的秋天教学设计
- 湖南安全生产讲解
- 新质生产力发展的主要因素
- 马兰农场新质生产力实践
- 杭州新质生产力发展规模
- 保密观考试题及答案2025保密观知识竞赛试题及答案
- 社团招新课件
- 老年髋部骨折围手术期衰弱护理管理专家共识解读
- 2025版农业合作社成员个人借款合同范本
- 2025年乒乓球裁判证考试试题及答案
- 活动成都热波zebra音乐节营销策划方案5月1日5月3日
- 四链融合:新质生产力的深度路径
- 八年级历史上学期(2025版)导言课课件
- 混凝土施工示范样板制作方案
- 酒店房卡管理制度与操作流程
- 2025-2026学年外研版(三起)(2024)小学英语三年级上册教学计划及进度表
评论
0/150
提交评论