JSE-05(面向对象编程(上))

上传人:豆浆 文档编号:26059526 上传时间:2017-12-22 格式:PPTX 页数:86 大小:2.26MB
返回 下载 相关 举报
JSE-05(面向对象编程(上))_第1页
第1页 / 共86页
JSE-05(面向对象编程(上))_第2页
第2页 / 共86页
JSE-05(面向对象编程(上))_第3页
第3页 / 共86页
JSE-05(面向对象编程(上))_第4页
第4页 / 共86页
JSE-05(面向对象编程(上))_第5页
第5页 / 共86页
点击查看更多>>
资源描述

《JSE-05(面向对象编程(上))》由会员分享,可在线阅读,更多相关《JSE-05(面向对象编程(上))(86页珍藏版)》请在金锄头文库上搜索。

1、第5章面向对象编程(上),讲师:李贺飞,本章内容,第一节 类和对象第二节 对象的属性和方法第三节 Java内存管理和垃圾回收第四节 类的封装第五节 this关键字第六节 声明和使用构造器第七节 包的管理,学习面向对象内容的三条主线,1.java类及类的成员2.面向对象的三大特征3.其它关键字,打开冰箱存储大象关闭冰箱,面向过程,冰箱,打开存储关闭,面向对象,冰箱.打开冰箱.存储冰箱.关闭,第一节 类和对象,何谓“面向对象”的编程思想?,顿 悟?OR 渐 悟?,面向对象与面向过程,面向对象(OOP)与面向过程二者都是一种思想,面向对象是相对于面向过程而言的。面向过程,强调的是功能行为。面向对象,

2、将功能封装进对象,强调具备了功能的对象。面向对象更加强调运用人类在日常的思维逻辑中采用的思想方法与原则,如抽象、分类、继承、聚合、多态等。面向对象的三大特征封装 (Encapsulation)继承 (Inheritance)多态 (Polymorphism),OOP: Object Oriented Programming 面向过程:procedure oriented programming,面向对象的思想概述,程序员从执行者转化成了指挥者。完成需求时:先去找具有所需功能的对象来用。如果该对象不存在,那么创建一个具有所需功能的对象。这样简化开发并提高复用。类(class)和对象(object

3、)是面向对象的核心概念。类是对一类事物描述,是抽象的、概念上的定义对象是实际存在的该类事物的每个个体,因而也称实例(instance)。 “万事万物皆对象”,可以理解为:类 = 汽车设计图;对象 = 实实在在的汽车面向对象程序设计的重点是类的设计定义类其实是定义类中的成员(成员变量和成员方法),类和对象,java类及类的成员,面向对象是一种的程序设计方法,其基本思想是使用对象和类等基本概念来进行程序设计。类是对现实世界事物的抽象定义属 性:对应类中的成员变量行 为:对应类中的成员方法,Field = 属性 = 成员变量,Method = (成员)方法 = 函数,类的语法格式,修饰符 class

4、 类名 属性声明;方法声明;说明:修饰符public:类可以被任意访问类的正文要用 括起来举例:public class Person private int age ; /声明私有变量 age public void showAge(int i) /声明方法showAge( ) age = i; ,创建Java自定义类,步骤:定义类(考虑修饰符、类名)编写类的属性(考虑修饰符、属性类型、属性名、初始化值)编写类的方法(考虑修饰符、返回值类型、方法名、形参等),练习:定义Person、Animal、ClassRoom、Zoo等类,加以体会。,java类及类的成员,java类的实例化,即创建类的

5、对象,如何使用java类?,对象的创建和使用,对象的创建和使用,对象通过new +构造器语句来创建引用变量用来引用对象。例如:声明Animal类型的引用变量t: Animal xb; 使用引用变量引用对象:xb = new Animal();,对象的创建和使用,public class Animal public int legs; public void eat() System.out.println(“Eating.”); public viod move() System.out.println(“Move.”); ,举例: public class Zoo public static

6、 void main(String args)Animal xb=new Animal();xb.legs=4;System.out.println(xb.legs);xb.eat();xb.move(); ,数据(属性),方法,类名,new Animal(),new Animal(),举例,类与对象,对象的创建和使用,如果创建了一个类的多个对象,对于类中定义的属性,每个对象都拥有各自的一套副本,且互不干扰。,举例: public class Zoo public static void main(String args)Animal xb=new Animal();Animal xh=new

7、 Animal();xb.legs=4;xh.legs=0;System.out.println(xb.legs); /4System.out.println(xh.legs); /0xb.legs=2;System.out.println(xb.legs); /2System.out.println(xh.legs); /0 ,提 示,类的访问机制:在一个类中的访问机制:类中的方法可以直接访问类中的成员变量。(例外:static方法访问非static,编译不通过。)在不同类中的访问机制:先创建要访问类的对象,再用对象访问类中定义的成员。,匿名对象,我们也可以不定义对象的句柄,而直接调用这个对

8、象的方法。这样的对象叫做匿名对象。如:new Person().shout(); 使用情况如果对一个对象只需要进行一次方法调用,那么就可以使用匿名对象。 我们经常将匿名对象作为实参传递给一个方法调用。,练 习,练习1:编写一个Student类,包含name、gender、age、id、score属性,分别为String、String、int、int、double类型。类中声明一个say方法,返回String类型,方法返回信息中包含所有属性值。在另一个TestStudent类中的main方法中,创建Student对象,并访问say方法和所有属性,并将调用结果打印输出。练习2:编写一个Dog类,包

9、含name、age、weight属性类中声明一个say方法,返回String类型,方法返回信息中包含所有属性值。 在另一个TestDog类中的main方法中,创建Dog对象,并访问say方法和所有属性,将调用结果打印输出。,第二节 对象的属性和方法,类的成员之一:属性,对象的属性,也称为成员变量,又称为实例变量。对象属性的初始化,即初始赋值,有以下同两种方式:默认初始化赋值:对象被创建时,不同类型的属性首先被赋予不同的缺省值。显式初始化赋值:如果在类中声明属性时指定了初始值,那么在对象被创建时,相应的属性就被显式地赋予此初始值。语法格式:修饰符 数据类型 属性名 =初值 ;,栈:局部变量和对象

10、的引用,Car car;/为变量赋值car = new Car();car.name = 奥迪;car.color = 黑色;Car car2 = new Car();car2.name = 宝马;car2.color = 红色;,堆:new 出来的,car,0x123,0x123,Name:“奥迪”Color:“黑色”,car2,Name:“宝马”Color:“红色”,0x456,0x456,白色,栈:局部变量和对象的引用,堆:new 出来的对象,Car car4 = new Car();car4.name = 别克;car4.color = 黑色;car4.num = 4;,car4:,n

11、ame:nullcolor:nullnum:0,“奔驰”,0x123,0x123,别克,“黑色”,4,d1,Name:nullAge:0Weight:0.0,1,10,0x123,0x123,对象属性的缺省初始化赋值,对象的产生,class Personint age;void shout()System.out.println(“oh,my god! I am ” + age);Person p1 = new Person();执行完后的内存状态,对象的使用,class TestPersonpublic static void main(String args) /程序运行的内存布局如下图

12、Person p1 = new Person();Person p2 =new Person();p1.age = -30;p1.shout();p2.shout();,根据代码,画出内存图,class Car String color = red; int num = 4; void show() System.out.println(color=+color+.num=+num); class TestCar public static void main(String args) Car c1 = new Car(); /建立对象c1Car c2 = new Car(); /建立对象c2

13、c1.color = blue; /对对象的属性进行修改c1.show(); /使用对象的方法c2.show(); ,对象内存结构,Car c1 = new Car(); c1.color=blue;Car c2 = new Car();,heap,c10x0034,c20x0078,0x0034,0x0078,new Car( ),new Car( ),color=rednum=4,color=rednum=4,blue,补:变量的分类:成员变量与局部变量,在方法体外,类体内声明的变量称为成员变量。在方法体内部声明的变量称为局部变量。注意:二者在初始化值方面的异同: 同:都有生命周期 异:局

14、部变量除形参外,需显式初始化。,成员变量,局部变量,实例变量(不以static修饰),类变量(以static修饰),形参(方法签名中定义的变量),方法局部变量(在方法内定义),代码块局部变量(在代码块内定义),所有变量,成员变量(属性)和局部变量的区别?,成员变量:成员变量定义在类中,在整个类中都可以被访问。成员变量分为类成员变量和实例成员变量,实例变量存在于对象所在的堆内存中。成员变量有默认初始化值。成员变量的权限修饰符可以根据需要,选择任意一个局部变量:局部变量只定义在局部范围内,如:方法内,代码块内等。局部变量存在于栈内存中。作用的范围结束,变量空间会自动释放。局部变量没有默认初始化值,每次必须显式初始化。局部变量声明时不指定权限修饰符,练 习,改写Dog类,name属性使用缺省初始值,age和weight属性使用显式初始值1和10。在TestDog类的main方法中,创建两个Dog对象,分别调用两对象的say方法,将调用结果打印输出。继续在main方法中,将两个Dog对象的name属性分别设为“京叭 ”和“吉娃娃”,第二个对象的体重设为8。再分别调用两对象的say方法,将调用结果打印输出。根据输出结果,理解由同一类创建的不同对象的属性的独立性。,方法的参数传递 引用数据类型的参数传递,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号