java封装.ppt

上传人:wj 文档编号:26258199 上传时间:2023-06-17 格式:PPT 页数:36 大小:658KB
下载 相关 举报
java封装.ppt_第1页
第1页 / 共36页
java封装.ppt_第2页
第2页 / 共36页
java封装.ppt_第3页
第3页 / 共36页
java封装.ppt_第4页
第4页 / 共36页
java封装.ppt_第5页
第5页 / 共36页
点击查看更多>>
下载资源
资源描述

java封装.ppt

《java封装.ppt》由会员分享,可在线阅读,更多相关《java封装.ppt(36页珍藏版)》请在冰豆网上搜索。

java封装.ppt

第一章,面向对象的三大基石之一封装,课程地位,LogicJava,C#,SQLBase,HTML/CSS,Prev,SQLAdvance,.NetOOP,JavaOOP,JavaScript,Winforms,JavaWeb,Testing,Oracle,A,SSH2,Ajax&Web2.0,AMVC,Linux,OOAD&UML,WindowsMobile,Android,NTC,SE&PM,企业项目实训(商业项目),课程介绍,学完本门课程,你能够掌握面向对象的三大特性:

封装、继承、多态掌握面向接口编程掌握Java异常处理学会用面向对象思想来编写程序,相关课程回顾,什么是类?

什么是对象?

类和对象的区别和联系?

提问,本章案例,用封装来拯救小新同学的人品用构造方法来拯救小新同学的性别重载构造方法,案例演示,本章目标,掌握使用封装的方式编写类掌握为类添加私有属性掌握方法重载掌握编写类的构造方法,构造方法重载,预习检查,使用封装有什么好处?

构造方法和实例方法的区别?

构造方法如何重载?

提问,用封装来拯救小新同学的人品,?

用封装来拯救小新同学的人品,看看是谁恶搞了小新的人品吧。

首先我们创建一个学员类,代表学员。

小新是学员类的一个对象。

可以看出来,学员类有两个属性:

姓名、人品,具有自我介绍的行为,人品的范围要求在1-10之间。

怎么就能恶搞了小新的人品呢?

我们来看看下面这位仁兄编写的测试类:

用封装来拯救小新同学的人品,仁兄代码:

人品被赋值为-1,教员演示Student1Test.java,用封装来拯救小新同学的人品,可以看出,小新的人品被恶搞了,怎么回事呢?

细心的同学能够看出来,学员类的两个属性都是公有的,可以被随意访问,我们无法控制这些属性的值,这就导致了以上的问题,那么如何解决呢?

这个时候我们就需要用到封装,因为它很好的解决了这个问题。

该看的看,不该看的别看,封装(Encapsulation)就是把不想或者不该告诉别人的东西隐藏起来,把可以告诉别人的公开(隐藏对象的属性和方法的实现细节,只公开对外接口)具体做法就是把属性私有化,提供公有的方法访问这些属性,在这些公有方法中实现对属性的控制。

如下所示,该看的看,不该看的别看,属性私有(用private关键字修饰),提供公有的方法访问私有属性,可以在方法中实现对属性的控制。

上述示例中学员类的两个属性都被声明为私有的了(private),也就是说这两个属性只能被Student2这个类访问,其他所有类都不能访问,那么怎么给这两个属性赋值,又如何取得这两个属性的值呢?

我们来看下面这位仁兄的代码:

该看的看,不该看的别看,仁兄代码:

细心的同学会发现,我们可以通过公有的getter(取值)、setter(赋值)方法访问这两个属性,而且在人品的赋值方法中加入了对属性访问的限制,成功的实现了对小新人品的拯救。

通过公有的setter方法给两个属性赋值,教员演示Student2Test.java,封装提供了4种访问控制级别,访问修饰符有以下4个:

public公共的,最高的访问级别,类的public成员所有类的成员都可以访问。

protected受保护的,类的protected成员只能被该类的成员以及其子类成员访问。

还可以被同一个包中其他类的成员访问。

private私有的,不对外公开,类的private成员只能被该类的成员访问,访问级别最低。

默认,类的成员什么修饰符都没有,又叫包修饰符,只有类本身成员和当前包下类的成员可以访问。

课堂练习,参照教材,改写学员类,增加年龄属性,实现对年龄属性的封装,年龄要求必须大于18周岁。

写测试类测试。

演示:

改写后的效果,小结,封装的具体实现步骤?

修改属性的可见性来限制对属性的访问。

为每个属性创建一对赋值方法和取值方法,用于对这些属性的访问。

在赋值和取值方法中,加入对属性的存取限制。

方法重载在现实生活中随处可见,喂养,类,方法,方法参数,方法实现,喂鸟食,遛鸟。

喂猫食,逗着玩。

喂狗食,遛狗。

学员,方法重载在现实生活中随处可见,通过上图我们可以分析得到:

学员被抽象为一个类。

学员有3个方法,方法名称都是喂养。

这3个方法的参数各不相同,分别是鹦鹉、猫、狗。

这3个方法的实现各不相同。

由此我们可以分析出方法重载的特点是:

在同一个类中发生。

方法名相同。

参数列表不同。

其中参数列表的不同可以是:

个数不同,顺序不同,类型不同。

我们接触过的方法重载,注意上面代码中的println方法,一共有10个,但是方法参数类型各不相同,能够实现不同数据类型数据的控制台打印并换行。

再看两个我们学过的方法:

理解了方法重载的概念,小新忽然想起在第一学期学习Java基础时其实已经用过方法重载了,而且不只一次,看看下面的代码,你想起来了吗?

我们接触过的方法重载,上面代码中Math类的两个静态方法max、min,可以传入不同数据类型的两个参数进行取最大值和最小值的操作。

为什么用构造方法,?

看看谁又恶搞了小新的性别吧。

首先我们创建一个学员类,代表学员。

小新是学员类的一个对象。

为什么用构造方法,增加性别属性,可以看出来,学员类有三个私有属性:

姓名、人品、性别,具有自我介绍的行为,人品的范围要求在1-10之间,三个属性都进行了封装,怎么就能恶搞了小新的性别呢?

我们来看看下面这位仁兄编写的测试类:

为什么用构造方法,仁兄代码:

调用公有的setter方法访问私有属性,教员演示Student3Test.java,为什么用构造方法,可以看出,小新的性别没有了,怎么回事呢?

细心的同学能够看出来,小新的性别属性没有被初始化,这就导致了以上的问题,原因是学员类Student3中的属性太多,调用赋值方法初始化小新同学的属性时很容易遗漏。

那么如何解决呢?

这个时候我们就需要用到构造方法,因为它很好的解决了因为属性过多而遗漏初始化的问题。

什么是构造方法,构造方法(constructor)是用来实例化一个类的对象的,我们在实例化类的对象时调用的就是这个类的构造方法,构造方法有如下特点:

构造方法是一个特殊的方法。

Java中的每个类都有构造方法,用来初始化该类的一个对象。

构造方法名和类名相同,没有返回类型。

构造方法可以重载。

构造方法只能由new关键字和this()调用,this()只能在构造方法中使用,用来调用其它构造方法,且只能作为构造方法代码体的第一条语句。

什么是构造方法,下面我们看一个小新同学写的构造方法的实例:

无参的构造方法,什么是构造方法,下面测试类中使用new关键字实例化对象的过程实际就是调用构造方法的过程,如示例所示:

new关键字调用无参的构造方法,教员演示Student4Test.java,什么是构造方法,在实例化对象时,我们已经悄然无声的对实例变量进行了初始化,实例变量都被赋予了默认值;但是大多数情况下我们希望实例变量的值不是默认值,也就是学员的名字不能都叫做小新,那么这个时候我们就需要使用带参数的构造方法了。

使用带参数的构造方法拯救小新同学的性别,带参的构造方法,使用带参数的构造方法拯救小新同学的性别,下面测试类中调用构造方法时需要传递参数,传递的参数值和构造方法的参数要完全匹配(个数、顺序、数据类型都要匹配):

new关键字调用带参的构造方法,教员演示Student5Test.java,使用带参数的构造方法拯救小新同学的性别,在创建对象时,通过调用带参数的构造方法,强制初始化了所有的实例变量,并在构造方法里完成了对学员对象人品属性的存取限制条件,这个时候小新同学的性别和人品都得到了保障。

那么上面两个示例中无参的构造方法和带参的构造方法可不可以共存呢,也就是说可不可以有不同的初始化行为呢?

答案是肯定的,我们之前学习过方法重载,构造方法也是可以重载的。

构造方法重载,在第一学期Java基础中学过的String(字符串)类的构造方法就是典型的构造方法重载的例子。

如下所示:

总结,什么是封装?

实现封装的具体步骤?

什么是方法重载?

什么是构造方法?

提问,课后作业,ThankYou!

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 农学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1