java面向对象ppt_JAva的面向对象编程 ppt

41528d3028836879cd698677c3999917.gifJAva的面向对象编程 ppt

Java的 面向对象编程主讲人:孙鑫http://www.sunxin.org面向对象编程概述n 简单的说,面向对象编程( Object Oriented Programming, 简称 OOP) 描述的是对象之间的相互作用。n 面向对象编程与面向过程编程的区别:过程化程序设计先确定算法,再确定数据结构;面向对象编程先确定数据结构,再确定运算。面向过程编程的程序员,习惯于建立数据结构存放数据并定义方法(函数)来操作数据;面向对象编程的程序员则构造一个对象模型,将数据与方法组织在一起。http://www.sunxin.org对象 对象的状态 对象的行为n 我们可以把现实世界的事物抽象成对象。n 对象一般都有两个特征:状态( state) 和行为( behavior)。n 软件的对象概念是由现实世界对象抽象而来 。 把现实世界对象的状态保存在软件对象的变量中;现实世界对象的行为通过软件对象的方法(函数)来实现。http://www.sunxin.org类和 对象n 把相似的对象划归成一个类。n 在软件中,类,就是一个模板,它定义了通用于一个特定种类的所有对象的状态(变量)和行为(方法)。n 类是创建对象的模板,对象是类的实例。http://www.sunxin.org面向对象程序设计n 从程序设计的角度看,类是面向对象程序中最基本的程序单元。类实质上定义的是一种数据类型,这种数据类型就是对象类型 。所以我们可以使用类名称来声明对象变量。n 声明对象变量之后,还不能使用对象。必须用运算符 new创建对象实体之后,才能使用对象。http://www.sunxin.org面向对象编程的难点n 掌握面向对象的困难之处在于思路的转换。我们通常习惯于考虑解决问题的方法,而不是考虑将问题抽象成对象再去解决它。http://www.sunxin.org一个简单的例子n 编写一个驾驶汽车的方法面向过程的程序设计:编写一个方法, void drivecar();面向对象的程序设计:将一辆汽车看成一个对象,将所有汽车对象的共性抽取出来,设计一个类 Car, 类中有一个方法 void drive(),用 Car这个类实例化一个具体的对象 car, 调用: car.drive()。http://www.sunxin.org类的构造方法n 构造方法的名字和类名相同,并且没有返回值。n 构造方法主要用于为类的对象定义初始化状态。n 我们不能直接调用构造方法,必须通过 new关键字来自动调用,从而创建类的实例。n Java的类都要求有构造方法,如果没有定义构造方法, Java编译器会为我们提供一个缺省的构造方法,也就是不带参数的构造方法。http://www.sunxin.orgnew关键字的作用n 为对象分配内存空间。n 引起对象构造方法的调用。n 为对象返回一个引用。http://www.sunxin.org缺省构造方法n 当我们用缺省的构造方法初始化对象当我们用缺省的构造方法初始化对象时,系统用默认值初始化对象的成员时,系统用默认值初始化对象的成员变量。变量。n 各种数据类型的默认值为:各种数据类型的默认值为:数值型 0boolean falsechar ‘\0’对象 nullhttp://www.sunxin.org方法的重载 (overload)重载构成的条件:方法的名称相同,但重载构成的条件:方法的名称相同,但参数类型或参数个数不同,才能构成方参数类型或参数个数不同,才能构成方法的重载。法的重载。http://www.sunxin.org特殊变量 thisn this变量代表对象本身n 当类中有两个同名变量,一个属于类(类的成员变量),而另一个属于某个特定的方法(方法中的局部变量),使用 this区分成员变量和局部变量。n 使用 this简化构造函数的调用。http://www.sunxin.org特殊变量 thisn 关于实例方法和实例数据成员的进一步说明 一个类所有的实例(对象)调用的成员方法在内存中只有一份拷贝,尽管在内存中可能有多个对象,而数据成员在类的每个对象所在内存中都存在着一份拷贝。 this变量允许相同的实例方法为不同的对象工作。 每当调用一个实例方法时, this变量将被设置成引用该实例方法的特定的类对象。方法的代码接着会与 this所代表的对象的特定数据建立关联。http://www.sunxin.org关键字 staticn 静态方法和静态变量是属于某一个类,而不属于类的对象。n 静态方法和静态变量的引用直接通过类名引用。n 在静态方法中不能调用非静态的方法和引用非静态的成员变量。反之,则可以。n 可以用类的对象 obj去调用静态的方法(), 如: obj.()。http://www.sunxin.org常量的定义n 使用关键字 final定义常量,例如:final double PI=3.1415926;n 作为一种约定,在定义常量时,通常采用大写形式。n final常量可以在声明的同时赋初值,也可以在构造函数中赋初值。n 为了节省内存,我们通常将常量声明为静态的( static)。http://www.sunxin.org类的继承n 理解继承是理解面向对象程序设计的关键。n 在 Java中,通过关键字 extends继承一个已有的类,被继承的类称为父类(超类,基类),新的类称为子类(派生类)。n 在 Java中,不允许多继承。http://www.sunxin.org方法的覆盖( override)n 在子类中定义一个与父类同名、返回类型、参数类型均相同一个方法,称为方法的覆盖。n 覆盖发生在子类与父类之间。http://www.sunxin.org特殊变量 supern 特殊变量 super, 提供了对父类的访问。n 可以使用 super访问父类被子类隐藏的变量或覆盖的方法。n 每个子类构造方法的第一条语句,都是隐含地调用 super(), 如果父类没有这种形式的构造函数,那么在编译的时候就会报错。http://www.sunxin.org多态性 n 通过覆盖父类的方法来实现,在运行时根据传递的对象引用,来调用相应的方法。http://www.sunxin.org面向对象的程序设计n 问题:求一个长方形的周长和面积。以面向过程的程序设计方式思考:1、确定长方形周长和面积的算法。2、编写两个方法(函数)分别计算长方形的周长和面积。3、求周长的方法(函数)和求面积的方法(函数)需要两个参数,分别是长方形的长和宽。http://www.sunxin.orgn 面向过程的程序设计代码:class Rectangle{static int perimeter(int length,int width){return 2*(length+width);}static int area(int length,int width){return length*width;}public static void main(String[] args){System.out.println(“perimeter = “ + Rectangle.perimeter(5,4))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值