java面向对象基础入门.docx
- 文档编号:5707656
- 上传时间:2022-12-31
- 格式:DOCX
- 页数:13
- 大小:27.11KB
java面向对象基础入门.docx
《java面向对象基础入门.docx》由会员分享,可在线阅读,更多相关《java面向对象基础入门.docx(13页珍藏版)》请在冰豆网上搜索。
java面向对象基础入门
1面向对象思想引入
●前面我们讲过数组,当有多个数组都需要遍历时,我们可以将遍历的代码封装到方法中,需要遍历时,就调用相应的方法即可,提高代码的复用性。
在对数组遍历的基础上继续增加需求,比如获取最值,数值逆序等,同样需要将这些功能封装到相应的方法中。
这样继续封装会发现方法越来越多,于是就想能不能将这些方法继续进行封装呢?
通过前面的讲解我们知道类是可以存放方法的,所以,我们就考虑使用类封装来这多个方法,将来再做数组的操作时,不用去找具体的方法,先找到这个类,然后使用这个类中的方法。
这就是面向对象思想的编程方式。
●我们来回想一下,这几天我们完成一个需求的步骤:
首先是搞清楚我们要做什么,然后在分析怎么做,最后我们再代码体现。
一步一步去实现,而具体的每一步都需要我们去实现和操作。
这些步骤相互调用和协作,完成我们的需求。
●在上面的每一个具体步骤中我们都是参与者,并且需要面对具体的每一个步骤和过程,这就是面向过程最直接的体现。
●那么什么是面向过程开发呢?
面向过程开发,其实就是面向着具体的每一个步骤和过程,把每一个步骤和过程完成,然后由这些功能方法相互调用,完成需求。
●面向过程的代表语言:
C语言
●当需求单一,或者简单时,我们一步一步去操作没问题,并且效率也挺高。
可随着需求的更改,功能的增多,发现需要面对每一个步骤很麻烦了,这时就开始思索,能不能把这些步骤和功能在进行封装,封装时根据不同的功能,进行不同的封装,功能类似的封装在一起。
这样结构就清晰了很多。
用的时候,找到对应的类就可以了。
这就是面向对象的思想。
接下来我们看看面向对象到底是什么?
●面向对象思想概述
●面向对象是基于面向过程的编程思想
●面向对象思想特点
●是一种更符合我们思想习惯的思想
●可以将复杂的事情简单化
●将我们从执行者变成了指挥者
●角色发生了转换
2面向对象思想举例
●面向对象思想举例
•买电脑
•吃饭
•洗衣服
•万事万物皆对象
●面向过程思想和面向对象思想的代码举例
•把大象装进冰箱
●1:
在用面向对象思想体现的时候,给出一个三句话使用规则,让我们更符合面向对象思想
●A:
首先分析有那些类
●B:
接着分析每个类应该有什么
●C:
最后分析类与类的关系
●面向对象开发
•就是不断的创建对象,使用对象,指挥对象做事情。
●面向对象设计
•其实就是在管理和维护对象之间的关系。
●面向对象特征
•封装(encapsulation)
•继承(inheritance)
•多态(polymorphism)
3类与对象关系
●我们学习编程语言,就是为了模拟现实世界的事物,实现信息化。
比如:
去超市买东西的计费系统,去银行办业务的系统。
●我们如何表示一个现实世界事物呢:
•属性就是该事物的描述信息
•行为就是该事物能够做什么
•举例:
学生事物
●我们学习的Java语言最基本单位是类,所以,我们就应该把事物用一个类来体现。
类与对象关系
●类:
是一组相关的属性和行为的集合
●对象:
是该类事物的具体体现
●举例:
•类学生
•对象班长就是一个对象
●类:
是一组相关的属性和行为的集合
●对象:
是该类事物的具体体现
●举例:
•类学生
•对象班长就是一个对象
●类与对象的关系如图
1:
图纸就是类
2:
每一个汽车就是一个个的对象
4类的定义
●现实世界的事物
•属性人的身高,体重等
•行为人可以学习,吃饭等
•Java中用class描述事物也是如此
•成员变量就是事物的属性
•成员方法就是事物的行为
●定义类其实就是定义类的成员(成员变量和成员方法)
●现实世界的事物
•属性人的身高,体重等
•行为人可以学习,吃饭等
•Java中用class描述事物也是如此
•成员变量就是事物的属性
•成员方法就是事物的行为
●定义类其实就是定义类的成员(成员变量和成员方法)
●学生类(讲解)
•如何定义
●按照事物到类的过程一步步分析
•如何使用
●创建对象:
●类名对象名=new类名();
●对象名.成员变量
●对象名.成员方法
●手机类(学生练习)
对象内存图
●1个对象的内存图
•一个对象的基本初始化过程
●2个对象的内存图
•方法的共用
●3个对象的内存图
•其中有两个引用指向同一个对象
5成员变量和局部变量的区别
●在类中的位置不同
•成员变量类中方法外
•局部变量方法内或者方法声明上
●在内存中的位置不同
•成员变量堆内存
•局部变量栈内存
●生命周期不同
•成员变量随着对象的存在而存在,随着对象的消失而消失
•局部变量随着方法的调用而存在,随着方法的调用完毕而消失
●初始化值不同
•成员变量有默认的初始化值
•局部变量没有默认的初始化值,必须先定义,赋值,才能使用。
●1:
成员变量和名称可以不可和局部变量一样呢?
●可以,但是使用的时候要注意,先找小范围,再找大范围。
形式参数问题
●基本类型作为形式参数
●引用类型作为形式参数
●classDemo{
●publicintgetSum(inta,intb){
●returna+b;
●}
●}
●classTest{
●publicstaticvoidmain(String[]args){
●Demod=newDemo();
●System.out.println(d.getSum(10,20));
●}
●}
●讲解的时候,先说我们去吃饭,调用服务员的记菜功能,然后服务员调用厨师的做菜功能。
●完毕后,厨师调用服务员的端菜功能,最后,我们吃就OK了。
●classStudent{
●publicvoidshow(){
●System.out.println(“show”);
●}
●}
●classStudentDemo{
●//如果参数是一个类名,那么实际需要的是一个具体的对象
●publicvoidmethod(Students){
●s.show();
●}
●}
●classStudentTest{
●publicstaticvoidmain(String[]args){
●StudentDemosd=newStudentDemo();
●Students=newStudent();
●sd.method(s);
●//多个匿名对象的写法
●newStudentDemo.method(newStudent());
●}
●}
6匿名对象
●匿名对象:
就是没有名字的对象。
•是对象的一种简化表示形式
●匿名对象的两种使用情况
•对象调用方法仅仅一次的时候
•作为实际参数传递
●1:
newStudent().show();
●2:
newStudentTest().method(newStudentDemo());
7封装概述
●封装概述
•是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
●好处:
•隐藏实现细节,提供公共的访问方式
•提高了代码的复用性
•提高安全性。
●封装原则:
•将不需要对外提供的内容都隐藏起来。
•把属性隐藏,提供公共方法对其访问。
●1:
通过学生案例,给年龄赋值为负数引出数据问题。
然后通过private解决这个问题。
最后说其实这就是封装。
8private关键字
●private关键字:
•是一个权限修饰符。
•可以修饰成员(成员变量和成员方法)
•被private修饰的成员只在本类中才能访问。
•private最常见的应用:
•把成员变量用private修饰
•提供对应的getXxx()/setXxx()方法
•一个标准的案例的使用
●1:
这个时候写例子,局部变量名称不要和成员变量名称一致
●2:
private仅仅是封装的一种体现,类和方法其实也是封装体
9this关键字
●this:
代表所在类的对象引用
●记住:
•方法被哪个对象调用,this就代表那个对象
●什么时候使用this呢?
•局部变量隐藏成员变量
•其他用法后面和super一起讲解
●1:
加入private后的标准案例有个小问题,就是见名知意的问题
●而一旦我们把局部变量名称和成员变量名称变成一致以后,就发生出问题了。
●2:
最终引出了通过this关键字解决该问题还可以同时画出内存图
10构造方法
●构造方法作用概述
•给对象的数据进行初始化
●构造方法格式
•方法名与类名相同
•没有返回值类型,连void都没有
•没有具体的返回值
●构造方法注意事项
•如果你不提供构造方法,系统会给出默认构造方法
•如果你提供了构造方法,系统将不再提供
构造方法也是可以重载的
1:
虽然构造方法没有返回值,但是也可以写一个return,在最后写return;这种做法在任何void类型的方法最后都是没有问题的。
2:
演示一个案例,构造方法的作用给成员变量赋值
11类的成员方法
●成员方法其实就是我们前面讲过的方法
●方法具体划分:
•根据返回值
•有明确返回值方法
•返回void类型的方法
•根据形式参数
•无参方法
•带参方法
12一个基本类的标准代码写法
●类
•成员变量
•构造方法
•无参构造方法
•带参构造方法
•成员方法
•getXxx()
•setXxx()
•给成员变量赋值的方式
•无参构造方法+setXxx()
•带参构造方法
●标准的学生类(讲解)
•感觉调用getXxx()输出学生信息比较麻烦,加入一个方法show(),输出学生对象的成员变量信息。
●标准的手机类(练习)
●注意
•目前的代码是为了练习的一种标准格式
•给成员变量赋值有两种方式,可以只写一种
•如果不单独获取数据,可以不写getXxx()方法
13类的初始化过程
●Students=newStudent();在内存中做了哪些事情?
•加载Student.class文件进内存
•在栈内存为s开辟空间
•在堆内存为学生对象开辟空间
•对学生对象的成员变量进行默认初始化
•对学生对象的成员变量进行显示初始化
•通过构造方法对学生对象的成员变量赋值
•学生对象初始化完毕,把对象地址赋值给s变量
14static关键字
●可以修饰成员变量和成员方法
●static关键字特点
●随着类的加载而加载
●优先于对象存在
●被类的所有对象共享
•这也是我们判断是否使用静态关键字的条件
●可以通过类名调用
●static关键字注意事项
●在静态方法中是没有this关键字的
●静态方法只能访问静态的成员变量和静态的成员方法
●1:
通过一个案例引入static关键字。
●人类:
Person。
每个人都有国籍,中国。
●2:
静态关键字的特点
●3:
静态关键字的注意事项
●必须通过案例演示。
15静态变量和成员变量的区别
●所属不同
•静态变量属于类,所以也称为为类变量
•成员变量属于对象,所以也称为实例变量(对象变量)
●内存中位置不同
•静态变量存储于方法区的静态区
•成员变量存储于堆内存
●内存出现时间不同
•静态变量随着类的加载而加载,随着类的消失而消失
•成员变量随着对象的创建而存在,随着对象的消失而消失
●调用不同
•静态变量可以通过类名调用,也可以通过对象调用
•成员变量只能通过对象名调用
16main方法是静态的
●publicstaticvoidmain(String[]args){}
•public被jvm调用,访问权限足够大。
•static被jvm调用,不用创建对象,直接类名访问
•void被jvm调用,不需要给jvm返回值
•main一个通用的名称,虽然不是关键字,但是被jvm识别
•String[]args以前用于接收键盘录入的
•演示案例
17制作帮助文档
●制作工具类
•ArrayTools
●制作帮助文档(API)
•javadoc-d目录-author-versionArrayTool.java
如何使用帮助文档
●找到文档,打开文档
●点击显示,找到索引,出现输入框
●你应该知道你找谁?
举例:
Scanner
●看这个类的结构(需不需要导包)
•成员变量字段
•构造方法构造方法
•成员方法方法
●看这个类的说
●看构造方法
●看成员方法
●然后使用
●A:
找到文档,打开文档。
●B:
点击左上角的显示变成隐藏,然后点击索引
●C:
你应该知道你要找谁?
Math
●所以,你就在那个输入框里面输入Math,然后回车,再回车。
●D:
看这个类的结构
●java.lang
●类Math
●java.util
●类Scanner
●如果是java.lang包下的类,是可以直接使用的。
(Math)
●否则,就需要导包才能使用。
(Scanner)
●E:
看看对这个类的说明。
●F:
看构造方法
●名称:
字段--成员变量--属性。
●a:
有构造方法,那么,就通过构造方法创建对象使用。
●b:
没有构造方法,那么,这个类的成员一般都是静态。
●通过类名调用。
●G:
按照正常的操作使用方法。
●左边:
●是否静态:
如果静态修饰,那么可以通过类名调用。
否则,就必须创建对象调用。
●是否有明确返回值:
如果是void类型,就直接调用即可。
否则,就可以输出或者赋值。
●右边:
●看方法名:
不要写错了。
●看参数:
看参数类型及个数。
18通过API学习Math类
●Math类概述
•Math包含用于执行基本数学运算的方法
●Math类特点
•没有构造方法,因为成员都是静态的
●Math类讲解一个方法
•获取随机数
•获取1-100之间的随机数
●案例:
猜数字小游戏
19代码块
●代码块
•在Java中,使用{}括起来的代码被称为代码块,根据其位置和声明的不同,可以分为局部代码块,构造代码块,静态代码块,同步代码块(多线程讲解)。
•局部代码块
•在方法中出现;限定变量生命周期,及早释放,提高内存利用率
•构造代码块
•在类中方法外出现;多个构造方法方法中相同的代码存放到一起,每次调用构造都执行,并且在构造方法前执行
•静态代码块在类中方法外出现,加了static修饰
•在类中方法外出现,并加上static修饰;用于给类进行初始化,在加载的时候就执行,并且值执行一次。
●1:
分别讲解每种代码块的格式和特点
●注意:
在讲解构造代码块以及静态代码块的时候,一定要在构造前后都演示一下,否则同学会认为是位置先后导致的。
●2:
面试题及代码演示:
●静态代码块,构造代码块,静态方法的执行顺序。
●static{
●System.out.println(“静态代码块”);
●}
●{
●System.out.println(“构造代码块”);
●}
●publicStudent(){
●System.out.println(“构造方法”);
●}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 面向 对象 基础 入门