面向对象.ppt

上传人:sccc 文档编号:5454028 上传时间:2023-07-08 格式:PPT 页数:31 大小:953.54KB
返回 下载 相关 举报
面向对象.ppt_第1页
第1页 / 共31页
面向对象.ppt_第2页
第2页 / 共31页
面向对象.ppt_第3页
第3页 / 共31页
面向对象.ppt_第4页
第4页 / 共31页
面向对象.ppt_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《面向对象.ppt》由会员分享,可在线阅读,更多相关《面向对象.ppt(31页珍藏版)》请在三一办公上搜索。

1、成都传智播客教育 讲师:任小龙,Java 面向对象1,讲师:任小龙(Will)Email:,成都传智播客教育 讲师:任小龙,今日任务,认识面向对象类和对象构造器static修饰符成员变量和局部变量封装,面向对象,春暖花开.,成都传智播客教育 讲师:任小龙,面向对象 春暖花开,一种编程思想,一个很抽象的概念,它相对面向过程而言。过程与对象都是一种解决问题的思想。面向过程:强调的是功能行为,一种过程,先干啥,再干啥;用函数把这些步骤一步一步实现,使用的时候依次调用函数就可以了。面向过程最大的问题在于随着系统的膨胀,面向过程将无法应付,最终导致系统的崩溃,面向对象的提出正是试图解决这一软件危机。面向

2、对象:将功能封装到对象里,强调的是具备某功能的对象;计算机语言为了更好的去描述现实生活中的事物,也一样会按照生活中的思考方式来定义,这样人们使用起来才会更方便。面向对象的三个特征:封装(Encapsulation);继承(Inheritance);多态(Polymorphism)。,成都传智播客教育 讲师:任小龙,类与对象之间的关系,类是对生活中某一类事物的描述(一种抽象概念),对象是该类事物实实在在存在的个体。(对象=实例),哥就是传说中的手机,我的英文名叫CellPhone。哥只是个概念,你抓不到我!,偶们才是亲口中说的手机哦!,成都传智播客教育 讲师:任小龙,类的定义,字段:类或对象所包

3、含的数据,对类状态的一种描述;方法:类或对象的特征或行为,修饰符 class 类名0n个字段;0n个方法,定义类,成都传智播客教育 讲师:任小龙,类的定义,定义类,其实就是在定义类中的成员。,class CellPhone String brand=google;String color=red;double price;public void showInfo()System.out.println(brand+手机是+color+色的+价值+price);,成都传智播客教育 讲师:任小龙,对象的定义、创建以及使用,格式:类名 对象名称=new 类名();/其实是两步操作类名 对象名称;/声

4、明对象对象名称=new 类名();/实例化对象例:CellPhone iphone=new CellPhone();通过“对象名.对象成员”的方式来操作对象中的内容。思考:对象在内存是如何存在的?,我们的语言:对象 等同于 实例成员变量 等同于 字段,匿名对象,当不定义变量来引用对象时,此时对象没有名字,称为匿名对象。如:new CellPhone();匿名对象只在堆内存中开辟空间,并不存在在栈内存对它的引用。因为没有被任何变量所引用,匿名对象在使用一次之后即成为垃圾,也就是说只能使用一次。通常当某一个对象只被使用一次的时候,就可以使用匿名对象。,成都传智播客教育 讲师:任小龙,对象的引用,C

5、ellPhone phone=new CellPhone();1.创建了一个CellPhone 的实例(对象),2.把这个CellPhone 实例赋给 phone 变量。phone.brand=Android;引用变量指向对象,也就是说引用型变量存放的仅仅是一个引用地址;,成都传智播客教育 讲师:任小龙,内存分析,phone,brand=Google,price=0.0,CellPhone phone=new CellPhone();CellPhone 山寨机=phone;,山寨机,CellPhone对象,对象的生命周期,从new开始到该对象不被什么变量引用的时候(如phone=null)之间

6、的时期就是对象的生命周期,一旦一个对象不被任何变量所引用时,该对象就是垃圾,就等着Java的垃圾回收器(GC)来清理。注意:并不是垃圾一旦产生GC就会清理,这完全取决于JVM的调度,程序员无法控制。,成都传智播客教育 讲师:任小龙,引用数据类型数组分析,学生是一个类,学生这个类有一个字段叫名字,有一个方法是交学费。每一个学生都是通过学生这个类new出来的一个对象。我现在创建一个数组,这个数组里面依次放的是没有交学费的学生的对象,我再分别调用数组里的这些学生的交学费方法。,成都传智播客教育 讲师:任小龙,引用数据类型数组分析,unFees,s1,s2,unFees1,name=Will;,unF

7、ees0,name=Lucy;,成都传智播客教育 讲师:任小龙,构造器,一旦创建对象就会调用与之对应的构造器(又称构造方法),构造器的作用:可用于创建对象和对对象初始化操作。如:CellPhone cp=new CellPhone();特点:方法名与类名相同不用定义返回值类型 不需要写return语句注意:默认构造方法的特点。多个构造方法是以重载的形式存在的。,构造器=构造方法,成都传智播客教育 讲师:任小龙,构造器,构造器初始化为对象分配内存;执行字段的显示初始化;执行构造器;由new运算符返回对象的引用;,setter方法和构造方法都可以用来初始化字段的值,那么什么时候用构造方法什么时候用

8、setter?当字段的值是和类的对象紧密相关不可分割的时候,用构造方法,就是说我要有这个实例,就必须有这个字段值,就用构造方法。需要初始化的字段值不太多的时候可以用构造方法,如果字段值太多,构造方法的参数列表太。了。其他时候都可以用setter方法。,成都传智播客教育 讲师:任小龙,static关键字,特点:随着类的加载而加载优先于对象存在被所有对象所共享可以直接被类名调用使用注意:静态方法只能访问静态成员但是非静态成员可以访问静态成员;静态方法中不可以使用this,super关键字主方法(main)是静态的public static void main(String agrs),成都传智播客

9、教育 讲师:任小龙,static关键字的使用,可修饰字段,方法。用static 修饰的成员表示它属于这个类共有,而不是属于该类的单个实例。static 修饰的字段=类字段static 修饰的方法=类方法没使用static修饰的字段和方法,成员属于类的单个实例,不属于类。没有static 修饰的字段=实例字段没有static 修饰的方法=实例方法,成都传智播客教育 讲师:任小龙,访问字段和方法,类和实例访问字段和方法的语法:访问类成员:类.字段 类.方法访问实例成员:实例.字段 实例.方法static 修饰的字段和方法,既可以通过类调用,也可以使用实例调用;没static 修饰的字段和方法,只能

10、使用实例来调用,成都传智播客教育 讲师:任小龙,静态字段初始化和内存分析,num=999,第1个对象:name=Will,第2个对象:name=Lucy,p1,p2,人类有一个静态字段:人类数量(num),人类,成都传智播客教育 讲师:任小龙,成员变量&局部变量,Java中根据定义变量的位置不同,把变量分成2种:成员变量:直接定义在类里的变量,又称为全局变量或字段。局部变量:变量除了成员变量就是局部变量。根据定义的位置不同有3种表现形式:方法形参,方法内变量,代码块变量。变量作用域:指的是变量的存在范围,只有在这个范围内,程序代码才能访问它。当一个变量被定义时,它的作用域就确定了:成员变量:在

11、类中声明,作用域是整个类;局部变量:作用域是定义开始到定义所在的花括号结束;局部变量没有初始值,所以使用前要显示的初始化。成员变量的初始值和动态创建数组里的元素的初始值是一样的;,在同一范围内不允许两个局部变量发生命名冲突局部变量必须显示初始化,变量隐藏,在同一个作用域内不允许定义同名的多个变量。若当成员变量和局部变量同名,则局部变量会隐藏成员变量,可使用this避免二义性。,变量生命周期,变量的作用域决定了变量的生命周期,说明作用域不同,生命周期就不一样。变量的生命周期指的是一个变量被创建并分配内存空间开始,到该变量被销毁并清除其所占内存空间的过程。类变量在内存中只有一个,JVM在加载类的过

12、程中为其分配内存,静态变量位于方法区,被类的所有实例共享。类变量的生命周期取决于类的生命周期,加载类时静态变量就被创建并分配内存,当卸载类时静态变量被销毁并撤销所占内存。每当创建类的实例时,JVM就会为实例变量分配一次内存,实例变量被创建也并分配内存,实例变量位于堆内存中。实例变量的生命周期取决于实例的生命周期,当创建实例时,实例变量被创建并分配内存,当销毁实例的时候,实例变量被销毁会并撤销所占内存。当JVM调用一个方法时,会为该方法中的局部变量分配内存。当结束调用该方法时,会结束方法中的局部变量的生命周期。,局部变量的初始化和中运行机制,局部变量定义后,必须显示初始化后才能使用,因为系统不会

13、为局部变量执行初始化操作。这就意味着,定义局部变量后,系统并未为这个变量分配内存空间。直到程序为这个变量赋值时,系统才会为局部变量分配内存,并将初始值保存到该内存中。局部变量不属于任何类或实例,因此它总是保存在其所在方法的栈内存中。基本数据局部变量:直接把这个变量的值保存到该变量所对应的内存中。引用数据局部变量:这个变量内存中存的是地址,通过该地址引用到该变量实际引用堆里的的对象。栈内存中的变量无需系统垃圾回收,其往往随方法或代码块的运行结束而结束。,成都传智播客教育 讲师:任小龙,面向对象 之 封装,封装的两个含义:1.把对象的状态和行为看成一个统一的整体,将二者存放在一个独立的模块中(类)

14、;2.信息隐藏,把不需要让外界知道的信息隐藏起来,尽可能隐藏对象功能实现细节,字段;封装机制在程序中的体现是:把描述对象的状态用字段表示,描述对象的行为用方法表示,把字段和方法定义在一个类中,并保证外界不能任意更改其内部的字段值,也不允许任意调动其内部的功能方法。程序中的一种体现:通常将类中的成员变量私有化(private),通过对外提供方法(setXxx,getXxx),可对该变量(xxx)进行访问。boolean 类型的变量没有getXX,只有 isXX;,成都传智播客教育 讲师:任小龙,this关键字,特点:this表示当前对象。当前对象 当前正在调用实例成员的对象换言之:谁调用了方法,

15、谁就是当前对象。什么时候使用this关键字呢?方法间的相互调用;this.字段;构造器中相互调用,但是此时this(参数)必须写在构造方法第一行。this不能用在static修饰的方法里和static修饰的代码块里;,成都传智播客教育 讲师:任小龙,package,package的引入,提供类的多层命名空间,从而能更好的管理代码结构,也能避免类名冲突。编译:javac-d.HelloWorld.java运行:java cd.itcast.demo.HelloWorldpackage必须写在文件的开头,必须写在import和类声明之前。java允许将一组功能相同的类放在同一个package下。企

16、业开发的命名规则 域名反过来写cn.itcast.cd.erp.crm.domainerp是项目名,crm是erp项目中的模块名,domain是crm中的一层组件名;包名的书写:全用小写字母,避免使用与系统发生冲突的名字,如不能定义java.lang、java.swing等。,成都传智播客教育 讲师:任小龙,import,访问带有package的类导入类,更好的翻译是“寻找”类:import pkg.subpkg.className寻找某个包下被使用到的全部类:import pkg.sunpkg.*;*只能表示类名,不能表示包名同一个类中出现多个相同的类名处理java.util.Date 和

17、java.sql.Date类的全限定名:该类的包名.子包名.类名String类的权限定名:java.lang.String,JVM会自动寻找java.lang下的所有被使用到的类:所以不需要我们去手工寻找;但JVM不能导入java.lang子包下的类。,成都传智播客教育 讲师:任小龙,java 常用包介绍,java.lang:语言核心类,系统自动导入只要搞java,天天都会用这个包。java.util:java 工具类、集合框架类和接口以后要学习时间,日历,集合等就得用到这个包。:网络编程接口和类以后要写和网络相关的应用就要用这个包。java.io:流的接口和类以后要写读写文件或者图片等这些就

18、要用这个包。java.text:java格式化相关类以后我们要做软件国际化就要用这个java.sql:jdbc相关接口和类 以后操作java连接数据库就要使用到这个包java.awt:抽象窗口工具集相关接口和类搞一个类似于QQ一样的软件,界面就得使用这个包下的类;javax.swing:图形用户界面相关接口和类(可跨平台),成都传智播客教育 讲师:任小龙,访问修饰符,private 类访问权限:本类内部可以访问,不能继承到子类;default 什么都不写,包访问权限:本类内部可以访问,同包其他类也可以访问,同包可继承;protected 子类访问权限:本类内部可以访问,不同包的子类也可以访问,同包其他类也可以访问,能继承到子类;public 公共访问权限:任何地方都可以访问,能继承到子类;,成都传智播客教育 讲师:任小龙,类的设计分析,分析思路:根据要求写出类所包含的字段;所有的字段都必须私有化;封装之后的字段可通过setter和getter设值和取得;按需求可添加若干构造方法;根据需求可添加相应的方法;类中的所有方法都不要直接处理(输出打印),而是交给调用者去处理。,设计:Student类,有名字和成绩字段,打印名字和成绩的一个方法print。设计并测试代码。,

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

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号