java李兴华学习笔记之面向对象(基础)

上传人:我*** 文档编号:133372785 上传时间:2020-05-26 格式:PDF 页数:27 大小:519.07KB
返回 下载 相关 举报
java李兴华学习笔记之面向对象(基础)_第1页
第1页 / 共27页
java李兴华学习笔记之面向对象(基础)_第2页
第2页 / 共27页
java李兴华学习笔记之面向对象(基础)_第3页
第3页 / 共27页
java李兴华学习笔记之面向对象(基础)_第4页
第4页 / 共27页
java李兴华学习笔记之面向对象(基础)_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《java李兴华学习笔记之面向对象(基础)》由会员分享,可在线阅读,更多相关《java李兴华学习笔记之面向对象(基础)(27页珍藏版)》请在金锄头文库上搜索。

1、 北京北京 MLDN软件实训中心软件实训中心 联系电话 联系电话 010 51283346 第 1 页 共 27 页 E Mail mldnqa 1 课程名称 面向对象 基础 课程名称 面向对象 基础 2 知识点 知识点 2 1 上次课程的主要知识点 上次课程的主要知识点 1 Java 可移植性原理 依靠 JVM 所有的 java 文件经过 javac 编译之后形成 class 文件 之后在 JVM 上解释执行 由于对于不同的操作系统有不 同的 JVM 所以程序只要有 JVM 就可以执行 那么就可以在不同的操作系统平台上运行所有的 java 程序 2 public class 和 class

2、的区别 使用 public class 声明的类必须与文件名称相同 如果使用 class 声明的类可以与文件名称不同 但是执行的时候 一定要执行已经生成的 class 文件 在一个 java 的文件之中 只能存在一个 public class 但是可以同时存在多个 class 的定义 而且根据不同的 class 声明 可以自动的划分成不同的 class 文件 只要是定义类则要求每个单词的首字母大写 北京北京 MLDN软件实训中心软件实训中心 联系电话 联系电话 010 51283346 第 2 页 共 27 页 E Mail mldnqa 3 Java 数据类型划分 基本数据类型 都是一个个具

3、体的值 数值型 表示具体的数字 所有的整数默认情况下都是 int 所有的小数都是 double 型的 整数型 byte short int long 浮点型 float double 字符型 char 使用 而且在中文环境下可以设置一个中文文字 采用的是 UNICODE 编码 布尔型 boolean 有 true 和 false 两种取值 引用数据类型 是靠着内存关系存在的 例如 类 接口 数组 4 方法 是一段可以重复调用的代码段 如果一个方法要由主方法直接声明 则格式 public static 返回值类型 方法名称 参数列表 重载 方法名称相同 但是参数的类型或个数不同 只要是定义方法

4、则命名规范是 第一个单词的首字母小写 之后每个单词的首字母大写 例如 printInfo 5 数组 数组属于引用数据类型 所以一定要划分出内存 栈和堆两块内存 数组的定义格式 格式一 数据类型 数组名称 new 数据类型 长度 格式二 声明数组 数据类型 数组名称 null 在栈内存中开辟 开辟数组 数组名称 new 数据类型 长度 在堆内存中开辟指定大小的数组 数组的静态初始化 数据类型 数组名称 值 取得数组长度 数组名称 length 数组可以使用方法接收 实际上这一点与内存的关系传递是一样的 数组操作相关的方法 java util Arrays sort 数组名称 System arr

5、aycopy 数组拷贝 2 2 本次预计讲解的知识点 本次预计讲解的知识点 1 面向对象的基本概念 2 类与对象的关系 引用传递 3 类封装性的操作 4 构造方法的定义及使用 5 String 类的使用 6 this 关键字的作用 3 具体内容 具体内容 3 1 面向对象的概念 了解 面向对象的概念 了解 面向对象算是一种比较新的软件设计的方法 在没有面向对象之前使用的是面向过程 是针对于一个问题解决问题 如果修改的话 则整个设计都要修改 面向对象是针对于一类问题来进行解决 某一局部的修改不影响其他位置的变化 在面向对象中主要分为以下三个方面 OOA 面向对象分析 OOD 面向对象设计 根据分

6、析的结果使用工具完成设计 北京北京 MLDN软件实训中心软件实训中心 联系电话 联系电话 010 51283346 第 3 页 共 27 页 E Mail mldnqa OOP 完成具体的功能实现 代码编写 在面向对象中 实际上还存在着三个主要的特性 封装性 保证对外部不可见 继承性 继续发扬广大 多态性 就属于变来变去 3 2 类与对象 类与对象 重点重点 在整个的面向对象之中 实际上最重要的就是类与对象的关系 也就是说面向对象完全是围绕类展开的 3 2 1 类与对象的关系 类与对象的关系 既然类和对象是核心的基础部分 那么两者之间存在着怎样的关系呢 类 类是一组共性的产物 是同一类事物的集

7、中表现 对象 是一种个性的体现 是个体的产物 对象中的所有操作行为都由类决定 所以 在使用中只要是类定义出的操作对象都可以应用 而如果类没有定义出 的操作 对象肯定无法使用 类是对象的模板 对象是类的实例类是对象的模板 对象是类的实例 3 2 2 类与对象的使用 类与对象的使用 在 Java 中可以使用 class 关键字来定义一个类 在类中有两大组成部分 属性 变量 方法 class Person 定义类 String name 表示一个人的姓名 int age 表示一个人的年龄 public void tell 表示一个功能 说话 System out println 姓名 name 年龄

8、 age 在本程序中就定义出了一个类 里面有两个属性 name age 和一个方法 tell 在 tell 方法将进行内容的输出 一个类定义完成之后肯定无法直接使用 需要依靠对象进行操作 那么下面给出对象定义格式 类名称 对象名称 new 类名称 一旦有了对象之后就可以通过 对象 属性 或者是 对象 方法 进行类的调用 class Person 定义类 String name 表示一个人的姓名 int age 表示一个人的年龄 public void tell 表示一个功能 说话 System out println 姓名 name 年龄 age public class OODemo01 北

9、京北京 MLDN软件实训中心软件实训中心 联系电话 联系电话 010 51283346 第 4 页 共 27 页 E Mail mldnqa public static void main String args Person per new Person 产生对象 per name 张三 设置 name 属性的内容 per age 30 设置 age 属性的内容 per tell 调用方法输出 那么下面来进一步分析以上代码的每一步操作 对象产生 Person per new Person 既然存在了关键字 new 而且类又属于引用数据类型 那么肯定现在 就开辟了相应的栈及堆内存空间 而且以上

10、的代码可以拆分成两步 声明对象 Person per null 在栈内存中声明 实例化对象 per new Person 开辟对应的堆内存空间 而且一定要记住的是 如果一个对象没有被实例化而直接使用的话 将出现以下的问题 Exception in thread main java lang NullPointerException 表示空指向异常 因为没有对应的堆内存空间 而且此种异常肯定会经常出现 那么以上的代码实际上可以表示成 以下的内存关系 当通过 对象 属性 实际上表示的就是每一个对应的堆内存空间的属性的操作 那么 如果现在按照以上的规律产生第二个对象肯定是不会互相影响的 因为只要存在

11、了关键字 new 就表示永远会 开辟新的内存空间 class Person 定义类 String name 表示一个人的姓名 北京北京 MLDN软件实训中心软件实训中心 联系电话 联系电话 010 51283346 第 5 页 共 27 页 E Mail mldnqa int age 表示一个人的年龄 public void tell 表示一个功能 说话 System out println 姓名 name 年龄 age public class OODemo03 public static void main String args Person per1 null Person per2

12、null per1 new Person 实例化 per2 new Person 实例化 per1 name 张三 per1 age 30 per2 name 李四 per2 age 20 per1 tell per2 tell 将以上的代码再次形成内存关系图 每一个对象拥有各自的内存空间 所以不会互相影响 而且可以发现一点 每一个对象中实际上保存的只是属性 北京北京 MLDN软件实训中心软件实训中心 联系电话 联系电话 010 51283346 第 6 页 共 27 页 E Mail mldnqa 并没有保存方法 因为所有的方法都是每个对象所共同拥有的 保存在全局代码区之中 栈内存保存的是对

13、堆内存的引用地址 而堆内存中保存的是每一个对象所拥有的属性 而全局代码区之中保存的是 所有类中的方法 表示公共调用 3 2 3 对象的引用传递 对象的引用传递 在数组中本身也属于引用传递 而且发现所谓的引用传递指的就是一个堆内存空间 可以同时被多个栈内存所指向 那么类本身也是一样的 即 一块堆内存可以同时被多个对象所同时指向 public class OODemo04 public static void main String args Person per1 null Person per2 null per1 new Person 实例化 per2 per1 引用传递 per1 name

14、 张三 per2 age 20 per1 tell 此就称为对象的引用传递 可以发现就是使用内存表示出关系 但是 在使用引用传递的过程中也会存在一种问题 如下代码 北京北京 MLDN软件实训中心软件实训中心 联系电话 联系电话 010 51283346 第 7 页 共 27 页 E Mail mldnqa public class OODemo05 public static void main String args Person per1 null Person per2 null per1 new Person 实例化 per2 new Person 实例化 per1 name 张三 p

15、er1 age 30 per2 name 李四 per2 age 20 per2 per1 per2 tell 现在的某些空间已经不再使用了 所以就成为了垃圾 只要是垃圾就要等待系统进行垃圾收集 在 java 中使用 GC 完成垃圾收集的操作 由于垃圾在程序中会占用系统的资源 所以在开发中一定要尽量避免过多的垃圾产生 3 3 封装性 封装性 重点重点 封装性属于面向对象的第一大特性 所谓的封装性就是指类内部的定义对外部不可见 范例 范例 观察以下程序的问题 北京北京 MLDN软件实训中心软件实训中心 联系电话 联系电话 010 51283346 第 8 页 共 27 页 E Mail mldn

16、qa class Person 定义类 String name 表示一个人的姓名 int age 表示一个人的年龄 public void tell 表示一个功能 说话 System out println 姓名 name 年龄 age public class EncDemo01 public static void main String args Person per new Person per name 张三 per age 30 per tell 此时 将年龄设置成 30 岁发现没有任何的错误 因为在整型的表示范围之中 是允许设置成负数的 那么在这种情 况下 语法没有错 但是从实际来看肯定是错误的 因为没有任何一个人的年龄是 30 岁 那么 会造成这种问题主要就是因为现在类中的属性可以被外部直接访问 那么如果希望属性或方法不希望被外部如果希望属性或方法不希望被外部 所访问的话 则可以使用所访问的话 则可以使用 private 关键字声明关键字声明 class Person 定义类 private String name 表示一个人的姓名表示一个人的姓名 private in

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 教学/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号