面向对象的特性.ppt

上传人:laozhun 文档编号:2311428 上传时间:2023-02-10 格式:PPT 页数:37 大小:276KB
返回 下载 相关 举报
面向对象的特性.ppt_第1页
第1页 / 共37页
面向对象的特性.ppt_第2页
第2页 / 共37页
面向对象的特性.ppt_第3页
第3页 / 共37页
面向对象的特性.ppt_第4页
第4页 / 共37页
面向对象的特性.ppt_第5页
第5页 / 共37页
点击查看更多>>
资源描述

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

1、面向对象的特性,目标,有关面向对象的概念Java的类Java的对象Java的面向对象特性抽象类和接口Inner Class总结,面向对象的概念,面向对象程序设计围绕的几个主要概念:抽象数据类型、类、类型层次(子类),封装性,继承性、多态性对象,消息和方法,抽象数据类型,class Car int color_number;int door_number;int speed;void brake()void speedUp();void slowDown(),抽象数据类型,类,什么是类?类是描述对象的“基本原型”,它定义一种对象所能拥有的数据和能完成的操作,在面向对象的程序设计中,类是程序的基本

2、单元。程序中的对象是类的一个实例,是一个软件单元,它由一组结构化的数据和在其上的一组操作构成。,变量:即指对象的所知道的状态方法:指对象的功能单元。什么是消息?软件对象通过相互间传递消息来相互作用和通信 一个消息由三部分组成:1.接受消息的对象2.要完成方法的名字3.方法需要的参数,一个例子在程序中操作对象是类的一个实例:即对象创建一个对象 Hello obj=new Hello();调用方法 obj.showString(“Hello World!”),class Hello,private String s;,public void showString()System.out.print

3、ln(s);public void changeString(String str)s=str;return s;,封装,什么是封装?封装把对象的所有组成部分组合在一起,封装定义程序如何引用对象的数据,封装实际上使用方法将类的数据隐藏起来,控制用户对类的修改和访问数据的程度。,子类,什么是子类?子类是作为另一个类的扩充或修正所定义的一个类.,bicycle,(super class),Mountain bikes,Racing bikes,Tandem bikes,sub class,继承,继承是子类利用父类中定义的方法和变量就像它们属于子类本身一样.,class Car int color_

4、number;int door_number;int speed;push_break()add_oil(),class Trash_Car extends Car double amount;fill_trash(),何时选择继承性,一个很好的经验:“B是一个A吗?”如果是则让B做A的子类.常犯的错误:A有一个B吗?例如让汽车轮子成为汽车的子类是错误的,方法重写(overridden),什么是方法的覆盖(重写)?在子类中重新定义父类中已有的方法,class Car int color_number;int door_number;int speed;push_break()speed=0;a

5、dd_oil(),class Trash_Car extends Car double amount;fill_trash()push_break()speed=speed-10;,多态性(polymorphic),什么是方法的重载(多态性)?在同一个类中至少有两个方法用同一个名字,但有不同的参数。,类,void show(int int_num),void show(double double_num),void show(nit nit_ um,float float_um),123,1.23,123,1.23,Java 类定义,包括类声明和类体类声明:publicabstract|fin

6、al class className extends superclassName implements interfaceNameList,类体定义如下:class className public|protected|private static final transient volatile type variableName;/成员变量 public|protected|private static final|abstract native synchronized returnType methodName(paramList)throws exceptionList state

7、ments/成员方法,成员变量,public|protected|private static final transient volatile type variableName;/成员变量 static:静态变量(类变量;相对于实例变量 final:常量,成员方法,public|protected|private static final|abstract native synchronized returnType methodName(paramList)throws exceptionList/方法声明 statements/方法体方法声明 static:类方法,可通过类名直接调用

8、abstract:抽象方法,没有方法体 final:方法不能被重写 native:集成其它语言的代码 synchronized:控制多个并发线程的访问,成员方法(值参传递),public class PassTest float ptValue;public static void main(String args)int val;PassTest pt=new PassTest();val=11;System.out.println(“Original Int Value is:”+val);,pt.changedInt(val);System.out.pringln(“Int Value

9、after Change is:”+val);pt.ptValue=101f;System.out.println(“Original ptValue is:”+pt.ptValue);pt.ChangeObjValue(pt);System.out.println(“ptValue after Change is:”+pt.ptValue);,public void changeInt(int value)value=55;public void changeObjValue(PassTest ref)ref.ptValue=99f;,方法体包括局部变量的声明以及所有合法的Java指令。局部

10、变量的作用域在该方法内部。若局部变量与类的成员变量同名,则类的成员变量被隐藏。,class Variable int x=0,y=0,z=0;/类的成员变量 void init(int x,int y)this.x=x;this.y=y;int z=5;/局部变量 System.out.println(“*in init*”);System.out.(“x=”+x+“y=”+y+“z=”+z),public class VariableTest public static void main(String args)Variable v=new Variable();System.out.pr

11、intln(“*before init*”);System.out.println(“x=”+v.x+“y=”+v.y+“z=”+v.z);v.init(20,30);System.out.println(“*after init*”);,System.out.println(“x=”+v.x+“y=”+v.y+“z=”+v.z);,this-用在一个方法中引用当前对象,它的值是调用该方法的对象。返回值须与返回类型一致,或是其子类返回类型是接口时,返回值必须实现该接口。,方法重载(Method Overloading),方法重载指多个方法享有相同的方法名区别在于:参数类型不同,或个数不同;返回

12、类型不能用来区分重载的方法。,class MethodOverloading void receive(int i)void receive(int x,int y)void receive(double d)void receive(String s),public class MethodOverloadingTest public static void main(String args)MethodOverloading mo=new MethodOverloading();mo.receive(1);mo.receive(2,3);mo.receive(12.56);mo.recei

13、ve(“very interesting,isnt it?”);,构造方法,重载经常用于构造方法构造方法具有和类名相同的名称,而且不返回任何数据类型构造方法只能由new运算符调用利用构造方法进行初始化构造方法不能被继承,class Point int x,y;Point()x=0;y=0;Point(int x,int y)this.x=x;this.y=y;,finalize()方法,在根类java.land.Object中实现对对象进行垃圾收集前,系统自动调用自己重写时需要调用父类的finalize()方法,protected void finalize()throws throwable

14、/clean up code for this class super.finalize();,Java对象,类实例化可生成对象对象通过消息传递来进行交互消息传递即激活指定的某个对象的方法以改变其状态或让它产生一定的行为。public class HelloWorldApp public static void main(String args)System.out.println(“hello”);,对象的生命周期,生成使用清除,包括声明、实例化和初始化格式:type objectName=new type(paramlist);(1)声明:type objectName 声明并不为对象分配

15、内存空间,而只是分配一个引用空间;(2)实例化:运算符new为对象分配内存空间,它调用对象的构造方法,返回引用;一个类的不同对象分别占据不同的内存空间。,(3)生成:执行构造方法,进行初始化;根据参数不同调用相应的构造方法。对象的引用指向一个中间的数据结构,它存储有关数据类型的信息以及当前对象所在的堆的地址,而对于对象所在的实际的内存地址是不可操作的,这就保证了安全性。通过运算符“.”可以实现对变量的访问和方法的调用。设定访问权限来限制其它对象对它的访问,调用对象的变量,格式:objectReference.variableobjectReference是一个已生成的对象,也可以是能生成对象的表达式例:p.x=10;tx=new Point().x;,调用对象的方法,格式:objectReference.methodName(paramlist);例如:p.move(30,20);new Point().move(30,20);使用方法的返回值 if(p.equal(20,30)/statements when equal else/statements when unequal,

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

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号