java文档.doc_第1页
java文档.doc_第2页
java文档.doc_第3页
java文档.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Java面向对象编程面向对象编程(Object Oriented Programming,简称OOP)描述的是对象之间的相互作用。面向对象编程与面向过程编程的区别:过程化程序设计先确定算法,再确定数据结构;面向对象编程先确定数据结构,再确定运算。面向过程编程的程序员,习惯于建立数据结构存放数据并定义方法(函数)来操作数据;面向对象编程的程序员则构造一个对象模型,将数据与方法组织在一起。从程序设计的角度看,类是面向对象程序中最基本的程序单元。类实质上定义的是一种数据类型,这种数据类型就是对象类型 。所以我们可以使用类名称来声明对象变量。声明对象变量之后,还不能使用对象。必须用运算符new创建对象实体之后,才能使用对象。class Pointint x,y;Point()x=5;y=5/类的构造void output()System.out.println(x);System.out.println(y);public static void main(String args)Point pt;Pt=new Point();/对象的声明,或者Point pt=new Point();pt.x=10;/对象的使用pt.y=10;pt.output();我们一般希望产生对象的时候x,y都有一个初始值,我们就有了类的构造方法。(如上绿色)。当我们new去构造一个对象的时候,就会自动调用构造函数。构造函数也可以传参:Point(int a,int b)x=a;y=b/类的构造此时对象的声明是:Point pt=new Point(3,3);构造方法的名字和类名相同,并且没有返回值。构造方法主要用于为类的对象定义初始化状态。我们不能直接调用构造方法,必须通过new关键字来自动调用,从而创建类的实例。Java的类都要求有构造方法,如果没有定义构造方法,Java编译器会为我们提供一个缺省的构造方法,也就是不带参数的构造方法。即Point();如果有带参的构造函数,缺省的构造函数将不复存在。new关键字的作用:为对象分配内存空间;引起对象构造方法的调用;为对象返回一个引用。缺省构造方法:当我们用缺省的构造方法初始化对象时,系统用默认值初始化对象的成员变量。各种数据类型的默认值为:数值型0booleanfalsechar 0对象null方法的重载(overload)重载构成的条件:方法的名称相同,但参数类型或参数个数不同,才能构成方法的重载。特殊变量this:this变量代表对象本身当类中有两个同名变量,一个属于类(类的成员变量),而另一个属于某个特定的方法(方法中的局部变量),使用this区分成员变量和局部变量。使用this简化构造函数的调用。如我们需要用不带参数的构造函数去调用带参数的构造函数,就只需将Point()改成Point()this(1,1);对象定义为Point pt=new Point();关于实例方法和实例数据成员的进一步说明:一个类所有的实例(对象)调用的成员方法在内存中只有一份拷贝,尽管在内存中可能有多个对象,而数据成员在类的每个对象所在内存中都存在着一份拷贝。this变量允许相同的实例方法为不同的对象工作。每当调用一个实例方法时,this变量将被设置成引用该实例方法的特定的类对象。方法的代码接着会与this所代表的对象的特定数据建立关联。关键字static如上例void output()System.out.println(x);System.out.println(y);改成:stsatic void output()System.out.println(“output() called”);当我们去调用静态方法的时候,就不需要产生一个类的对象了,可以直接写成Point.output();运行的结果就是output() called。n 静态方法和静态变量是属于某一个类,而不属于类的对象。n 静态方法和静态变量的引用直接通过类名引用。n 在静态方法中不能调用非静态的方法和引用非静态的成员变量。反之,则可以。n 可以用类的对象pt去调用静态的方法output(),如:pt.output()。常量的定义:使用关键字final定义常量,例如:final double PI=3.1415926;final常量可以在声明的同时赋初值,也可以在构造函数中赋初值。为了节省内存,我们通常将常量声明为静态的(static)。此时必须是在声明的同时给常量赋值,即static final double PI=3.1415926。不能在构造函数中赋值。类的继承:在Java中,通过关键字extends继承一个已有的类,被继承的类称为父类(超类,基类),新的类称为子类(派生类)。 在Java中,不允许多继承。如下例:运行的结果是:animal breatheanimal breathe方法的覆盖(override):在子类中定义一个与父类同名、返回类型、参数类型均相同一个方法,称为方法的覆盖。覆盖发生在子类与父类之间。上例中,class Fish extends AniamlSystem.out.println(“fish bubble”);运行的结果是:animal breathefish bubble特殊变量super:上例中,我们知道animal breathe被覆盖。如果我们也想要打印这个结果,我们可以将代码改成:class Fish extends Aniamlsuper.breathe();System.out.println(“fish bubble”);打印结果:animal breatheanimal breathefish bubble特殊变量super,提供了对父类的访问。可以使用super访问父类被子类隐藏的变量或覆盖的方法。每个子类构造方法的第一条语句,都是隐含地调用super(),如果父类没有这种形式的构造函数,那么在编译的时候就会报错。例如:Animal()System.out.println(“animal construct”);Fish()System.out.println(“fish construct”);在fish这个构造函数中都隐含着super()这个父类。如果在子类中调用父类中带参的构造函数,可以super(30,40);来完成,构造方法是不能继承的,所以不能写成Animal(30,40);。多态性:通过覆盖父类的方法来实现,在运行时根据传递的对象引用,来调

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论