JAVA(面向对象基础部分).ppt
《JAVA(面向对象基础部分).ppt》由会员分享,可在线阅读,更多相关《JAVA(面向对象基础部分).ppt(42页珍藏版)》请在三一办公上搜索。
1、第五章 面向对象基础,Java程序设计,l h,路 强,hapter5 面向对象基础,本章学习提示,本章我们主要学习面向对象编程的基本概念。封装、继承、多态访问控制符的使用Static 和 final 的使用,hapter5 面向对象基础,目 录,hapter5 面向对象基础,OOP语言,面向对象程序设计(OOP Object-Orienten Programming)是现今程序设计的主流和流行趋势。在面向对象的程序设计中,将所有事物都作为对象来处理.OOP的基本思想是把人们对现实世界的认识过程应用到程序设计中。现实世界的物体就是对象,它有两个基本特点一个是物体的内部构成,另一个是物体的行为.
2、OOP与现实对象两个基本特点相对应的是数据和方法。数据表示对象的构成,方法表示对象的行为.,hapter5 面向对象基础,类的概念,类是对象的“模板”,对象是类的实例.类与对象之间的关系可以看成是抽象与具体的关系。其中类是抽象的,对象是具体的类描述了对象的属性和行为对象是类的一个实例在JAVA语言中,所有的东西都是对象,对象就如同是一种新型变量,通过赋值语句对该变量进行性初始化操作.比如,当设计灯泡的时候要求每一个灯泡都必须具有型号这个属性,同时还要能够进行打开、关闭等操作因此当把灯泡这些共同的属一生和行为集中起来的时候就抽象出一个灯泡类每一个具有这些属性和行为的,具体的灯泡就是这个灯泡类的对
3、象或者称为实例,hapter5 面向对象基础,面向对象的四大特性,抽象(Abstraction)封装(Encapsulation)继承(Inheritance)多态(Polymorphism),hapter5 面向对象基础,面向对象的基本特征,封装性:基本思想:把客观世界中联系紧密的元素及其相关操作组织在一起,使其相互作用隐藏、封装在内部,而对外部对象只提供单一的功能接口.目的:将对象的使用者和设计者分开。类比:汽车的左转、右转;被陶瓷封装的集成芯片,hapter5 面向对象基础,继承性,继承是OOP中一种由已有的类创建新类的机制。一个父类(公共属性的集合)可以有多个子类(是父类的特殊化),一
4、个子类只可以有一个父类 子类可以直接使用父类的方法,也可以根据需要修改父类中已经定义的方法(即不改变方法名,而修改方法的参数个数、参数类型)。父类和子类可有同名的方法(多态性)。,hapter5 面向对象基础,多态性,定义:由于父类和子类可以有同名的方法,在运行时JVM根据方法的参数个数和类型的不同来查找、决定执行哪个版本的方法,称为多态性.在程序执行时,JVM对对象某一方法的查找是从该对象类所在层次开始,沿类等级逐级向上进行,把第一个方法作为所要执行的方法。所以,子类的方法可以屏蔽父类的方法.,hapter5 面向对象基础,面向对象程序设计方法,面向对象程序设计方法是:对象=(算法+数据结构
5、)程序=(对象+对象+)算法与数据结构是一个整体,算法离不开数据结构,算法只能适用于特定的数据结构。面向对象中,算法与数据结构被捆绑成一个类OOA-OOD-OOI,hapter5 面向对象基础,目 录,hapter5 面向对象基础,数据存在哪里,对程序运行时各部分是如何展开的一一特别是内存是如何分配的,作一个直观的描述还是很有必要的.数据可以存储在以下六个地方:寄存器栈堆静态存储固定存储非内存的存储,hapter5 面向对象基础,数据存在哪里-1,寄存器这是反应最快的存储,因为它所处位置不同:处理器里.由于寄存器的数最非常有限,是由编译器分配的.非但不能直接控制寄存器,甚至连它存在的证据也找不
6、到.栈位于常规内存区里,处理器可以通过栈指针(stack pointer)对它进行直接访问.栈指针下移就创建新的存储空间,向上移就释放内存空间.仅次于寄存器的最快、最有效率的分配内存的方法.由于Java 编译器必须生成能控制栈指针移动的代码,所以程序编译的时候,那些将被存储在栈中的数据的大小和生命周期必须是已知的.使程序的灵活性受到了限制,所以尽管Java把某些数据-特别是对象的引用reference存放在栈里,但对象本身并没有放在栈里.,hapter5 面向对象基础,数据存在哪里-2,堆是“多用途的内存池”(也在内存里面),所有Java对象都保存在这里.堆的优点:分配空间的时候,编译器无需知
7、道该分配多少空间,或者这些数据会在堆里呆多长时间.因此使用堆的空间会比较灵活.只要想创建对象,用new就行了,程序执行的时候自会在堆里分配空间.堆的缺点:当然得为这种灵活性付出代价,分配堆的存储空间要比分配栈的慢一些(假如能像C+那样在栈里创建对象).静态存储“静态”在这里的意思就是“在固定的位置”(还是在RAM中)。静态存储中的数据在整个程序的运行期间都能访问到。可以用static关键词说明对象中的某个元索是静态的,但是Java对象本身是决不会放到静态存储中去的.,hapter5 面向对象基础,数据存在哪里-3,固定存储常量值通常直接放在程序里,这样它们就不会被改动,因而也更安全.非内存的存
8、储如果数据完全独立于程序,那么即使程序不运行,它也应该也还在;即使程序失去了对数据的控制,它也仍然还在.两个最主要的例子是流对象(streamed object)和持久化对象(persistent object).,hapter5 面向对象基础,类的定义,类定义的格式:类修饰符 class 类名 extends 父类名 implements 接口名 成员变量定义;方法定义;,定义类的结构包含有类说明和类的实体两部分。类的说明部分由关键字class与类名组成;类体包括变量的说明、方法的定义与实现两个部分。,类名的第一个字母要大写。类体要用花括号 括起来。,创建类对象一般形式:类名 对象变量=ne
9、w 类名(参数1,参数2,);或者类名 对象变量;对象变量=new 类名(参数1,参数2,);,hapter5 面向对象基础,类的定义,/创建一个新人物class People private String name,address;public void setInfo(String newname,String newaddress)name=newname;address=newaddress;public String toString()return+name+,+address+;public class ch05_01_People public static void main
10、(String args)People someguy=new People();someguy.setInfo(佐助,火影村);System.out.println(someguy.toString();,hapter5 面向对象基础,声明对象时的内存模型,当用People类声明一个对象someguy:People someguy=new People();内存模型仅建立了“someguy”对象的引用(reference)尚未真正分配内存空间,hapter5 面向对象基础,对象分配内存后的内存模型,当系统见到 someguy.setInfo(佐助,火影村);做两件事:为x和y成员变量分配内存
11、,即类的所有成员变量被分配内存空间,然后执行构造方法中的语句.new运算符在为name和address成员变量分配内存后,将返回一个引用 给对象 someguy。,hapter5 面向对象基础,对象的初始化和构造方法,构造方法是一个类方法中方法名与类名相同的类方法,它的作用是当使用new关键字创建一个对象时,自动调用并对新建对象进行初始化操作.构造方法的特点构造方法与类名相同构造方法没有返回值,不定义返回类型构造方法可以重载,针对参数数量和类型定义多个同名构造方法构造方法可以继承,子类可以继承父类的构造方法构造方法不能由编程人员显式地直接调用,它是在对象创建时由new运算符自动调用的构造方法只
12、用来对类实例进行初始化,目的在于简化初始化操作在Java中,对象的创建和初始化是统一的两者缺一不可,hapter5 面向对象基础,构造方法构造方法的作用,构造方法的作用对象初始化引入更多的灵活度(变量赋值或更复杂的操作)类中可以不定义构造方法每个类都至少有一个构造方法,如果程序员没有为类定义构造方法,系统会自动为该类生成一个默认的构造方法。默认构造方法的名字与类名相同,它的参数列表和方法体均为空,自动将所有实例变量初始化为默认值(数值型为0,布尔型为false,字符型为u0000,对象型为null).一旦定义了自己的构造方法,默认构造方法将不再起作用.,hapter5 面向对象基础,Code,
13、/如何将没有设计构造器的类添加构造器/研究带有构造器的类与没有构造器的类之间的区别 class Student/定义 Student 类 static long sum=0;String name;String address;String grade;static int score;public static long collect()/定义类的方法 sum+=score;return sum;public void setInfo(String x1,String x2,String x3)name=x1;address=x2;grade=x3;public void setScore
14、(int y)score=y;public class ch05_04_Student public static void main(String args)Student zhang=new Student();/创建Student类的对象 zhang.setInfo(“张三”,“屯溪路”,“计算机学院);zhang.setScore(90);zhang.collect();Student wang=new Student();/创建Student类的对象 wang.setInfo(王五,屯溪路,计算机学院);wang.setScore(85);(zhang.name+zhang.addr
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 面向 对象 基础 部分

链接地址:https://www.31ppt.com/p-6509148.html