欢迎来到天天文库
浏览记录
ID:36209374
大小:968.31 KB
页数:42页
时间:2019-05-07
《java(面向对象基础部分)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第五章面向对象基础︳Java程序设计luqiang@hfut.edu.cnhttp://cadcg.hfut.edu.cn路强本章学习提示本章我们主要学习面向对象编程的基本概念。封装、继承、多态访问控制符的使用Static和final的使用Chapter5面向对象基础目录面向对象概念1访问控制符32类和对象内部类5static&final4Chapter5面向对象基础OOP语言面向对象程序设计(OOPObject-OrientenProgramming)是现今程序设计的主流和流行趋势。在面向对象的程序设计中,将所
2、有事物都作为对象来处理.OOP的基本思想是把人们对现实世界的认识过程应用到程序设计中。现实世界的物体就是对象,它有两个基本特点一个是物体的内部构成,另一个是物体的行为.OOP与现实对象两个基本特点相对应的是数据和方法。数据表示对象的构成,方法表示对象的行为.Chapter5面向对象基础类的概念类是对象的“模板”,对象是类的实例.类与对象之间的关系可以看成是抽象与具体的关系。其中类是抽象的,对象是具体的类描述了对象的属性和行为对象是类的一个实例在JAVA语言中,所有的东西都是对象,对象就如同是一种新型变量,通过赋
3、值语句对该变量进行性初始化操作.比如,当设计灯泡的时候要求每一个灯泡都必须具有型号这个属性,同时还要能够进行打开、关闭等操作因此当把灯泡这些共同的属一生和行为集中起来的时候就抽象出一个灯泡类每一个具有这些属性和行为的,具体的灯泡就是这个灯泡类的对象或者称为实例Chapter5面向对象基础面向对象的四大特性抽象(Abstraction)封装(Encapsulation)继承(Inheritance)多态(Polymorphism)Chapter5面向对象基础面向对象的基本特征封装性:基本思想:把客观世界中联系紧密的
4、元素及其相关操作组织在一起,使其相互作用隐藏、封装在内部,而对外部对象只提供单一的功能接口.目的:将对象的使用者和设计者分开。类比:汽车的左转、右转;被陶瓷封装的集成芯片Chapter5面向对象基础继承性继承是OOP中一种由已有的类创建新类的机制。一个父类(公共属性的集合)可以有多个子类(是父类的特殊化),一个子类只可以有一个父类子类可以直接使用父类的方法,也可以根据需要修改父类中已经定义的方法(即不改变方法名,而修改方法的参数个数、参数类型)。父类和子类可有同名的方法(多态性)。Chapter5面向对象基础多
5、态性定义:由于父类和子类可以有同名的方法,在运行时JVM根据方法的参数个数和类型的不同来查找、决定执行哪个版本的方法,称为多态性.在程序执行时,JVM对对象某一方法的查找是从该对象类所在层次开始,沿类等级逐级向上进行,把第一个方法作为所要执行的方法。所以,子类的方法可以屏蔽父类的方法.Chapter5面向对象基础面向对象程序设计方法面向对象程序设计方法是:对象=(算法+数据结构)程序=(对象+对象+…)算法与数据结构是一个整体,算法离不开数据结构,算法只能适用于特定的数据结构。面向对象中,算法与数据结构被捆绑成
6、一个类OOA->OOD->OOIChapter5面向对象基础目录面向对象概念1访问控制符32类和对象内部类5static&final4Chapter5面向对象基础数据存在哪里对程序运行时各部分是如何展开的一一特别是内存是如何分配的,作一个直观的描述还是很有必要的.数据可以存储在以下六个地方:寄存器栈堆静态存储固定存储非内存的存储Chapter5面向对象基础数据存在哪里-1寄存器这是反应最快的存储,因为它所处位置不同:处理器里.由于寄存器的数最非常有限,是由编译器分配的.非但不能直接控制寄存器,甚至连它存在的证据
7、也找不到.栈位于"常规内存区"里,处理器可以通过栈指针(stackpointer)对它进行直接访问.栈指针下移就创建新的存储空间,向上移就释放内存空间.仅次于寄存器的最快、最有效率的分配内存的方法.由于Java编译器必须生成能控制栈指针移动的代码,所以程序编译的时候,那些将被存储在栈中的数据的大小和生命周期必须是已知的.使程序的灵活性受到了限制,所以尽管Java把某些数据--特别是对象的"引用"reference存放在栈里,但对象本身并没有放在栈里.Chapter5面向对象基础数据存在哪里-2堆是“多用途的内存池
8、”(也在内存里面),所有Java对象都保存在这里.堆的优点:分配空间的时候,编译器无需知道该分配多少空间,或者这些数据会在堆里呆多长时间.因此使用堆的空间会比较灵活.只要想创建对象,用new就行了,程序执行的时候自会在堆里分配空间.堆的缺点:当然得为这种灵活性付出代价,分配堆的存储空间要比分配栈的慢一些(假如能像C++那样在栈里创建对象).静态存储“静态”在这里的意思就是
此文档下载收益归作者所有