计算机第2章java面向对象编程基础

上传人:j****9 文档编号:57455644 上传时间:2018-10-22 格式:PPT 页数:134 大小:746.50KB
返回 下载 相关 举报
计算机第2章java面向对象编程基础_第1页
第1页 / 共134页
计算机第2章java面向对象编程基础_第2页
第2页 / 共134页
计算机第2章java面向对象编程基础_第3页
第3页 / 共134页
计算机第2章java面向对象编程基础_第4页
第4页 / 共134页
计算机第2章java面向对象编程基础_第5页
第5页 / 共134页
点击查看更多>>
资源描述

《计算机第2章java面向对象编程基础》由会员分享,可在线阅读,更多相关《计算机第2章java面向对象编程基础(134页珍藏版)》请在金锄头文库上搜索。

1、第2章 Java面向对象编程基础,本章要点 类及对象的概念。 类的定义,创建类的实例对象。 类的成员定义。 类及其成员的访问控制。 类及其成员的修饰。 类的继承。 多态技术。 制作用户预定义类包 接口的概念和应用。 异常处理,21类的定义 Java是一种纯面向对象的编程语言,面向对象程序设计的基本思想是将现实世界中的事物抽象为对象,抽象出来的对象被赋给相应的状态和行为,通过对消息的响应完成一定的任务。在现实生活中,任何事物都可以被认为是对象(Object),如:汽车、电视机、时钟、人等。对象都有两个共性: (1)具有一定的状态和特性。如电视机有尺寸、外形、颜色等外部特性。 (2)每个对象对应一

2、组特定的操作。如电视机有开、关、选择频道等操作。,面向对象程序设计方法就是把现实世界中对象的状态和操作抽象为程序设计语言中的对象,达到二者的统一。对同一种对象的所有共性进行抽象,就得到了类的概念。面向对象程序设计中的对象是由描述状态的属性和对这些属性进行维护和操作的一系列方法组成的事务处理单位,类相当于创建对象实例的模板,通过对其实例化得到同一类的不同实例。,2.1.1 类的声明,任何一个Java程序都是由一个个类组成的,编写Java程序的过程就是从现实问题中抽象出Java可实现的类并用合适的语句定义它们的过程,这个定义过程包括对类内各种变量和方法的声明和定义,创建类的对象,也包括类间各种关系

3、和接口的声明和定义。,类声明的格式如下: public|friendlyabstractfinal class 类名 extends 父类名 implements 接口名表 变量声明; 方法声明; ,包含关键字class的一行称为类头,花括号内的部分称为类体。类声明使用关键词class,后跟类名,类名必须是合法的标识符,在class关键词前面可以使用修饰符。类的修饰符说明了类的属性,主要有访问控制修饰符符、抽象修饰符、最终修饰符等。 public|friendly:访问控制修饰符,在类中使用的访问控制修饰符有public或friendly。 访问控制修饰符不仅针对于类,类的变量、方法的访问也有

4、该项的限制,后面会专门介绍。,abstract:抽象修饰符,声明该类不能被实例化。即抽象类不能创建类的实例。抽象类中主要包含一些静态属性和抽象方法,可以由非抽象子类继承。 final:最终修饰符,声明该类不能被继承,即没有子类。 class 类名:关键字class表示类声明,类名必须是合法的标识符。 extends父类名:关键词extends声明该类的父类。 implements 接口名表:关键词implements声明该类要实现的接口,如果实现多个接口,则各接口之间用逗号分隔。,例2-1:类声明。 /程序名:Sample2_1.java class PrimitiveDefault /类声明

5、boolean bl; /成员变量声明char ch;byte b;short sh;int i;long l;float f;double d; public class Sample2_1 /类声明public static void main(String args) /应用程序中的 main()方法,PrimitiveDefault pd; /声明对象pdpd=new PrimitiveDefault(); /为对象pd分配内存,使用new和类中的构造方法System.out.println(“boolean型变量的缺省值:”+pd.bl);System.out.println(“ch

6、ar型变量的缺省值:”+pd.ch);System.out.println(“byte型变量的缺省值:”+pd.b);System.out.println(“short型变量的缺省值:”+pd.sh);System.out.println(“int型变量的缺省值:”+pd.i);System.out.println(“long型变量的缺省值:”+pd.l);System.out.println(“float型变量的缺省值:”+pd.f);System.out.println(“double型变量的缺省值:”+pd.d); ,运行结果如下: boolean型变量的缺省值:false char型变

7、量的缺省值: byte型变量的缺省值:0 short型变量的缺省值:0 int型变量的缺省值:0 long型变量的缺省值:0 float型变量的缺省值:0.0 double型变量的缺省值:0.0,本例中声明了2个类,由public修饰的类名要和文件名相同,类PrimitiveDefalse中声明的8个变量是基本数据类型的变量,Java对基本类型变量的大小事先进行了定义,都赋予了默认值,其大小不随着硬件平台和操作系统的改变而变化,这也正是Java程序具有很强移植能力的原因之一。类Sample2_1中声明的变量pd是引用数据类型的,必须要使用new和构造函数实例化之后才能引用。,2.1.2 类体,

8、类头定义了类的性质,类体则定义了类的具体内容,类体中一般包括成员变量的声明和成员方法的定义。 类成员变量可以存储反映类属性的数据,而类的成员方法则规定了类的行为,如对类属性数据的某种操作等。,成员变量可以是基本数据类型的,也可以是引用数据类型的。成员变量的作用范围是整个类,即在类的所有方法中都有效,但对其它类是不可见的,在其它类中访问属性成员需要声明来源,具体地,是在程序中使用类名或对象名声明。 可以在类体的方法定义中声明和初始化局部变量或对象,这些局部变量只在方法内有意义,在方法外是没有意义的。类体中的一个方法可以调用另一个方法,但Java不允许递归调用,也不允许交叉循环调用,Java也不允

9、许嵌套定义方法。类的成员方法的作用范围也是整个类,即在定义它的类中是可见的,但对其它类是不可见的,在其它类中调用类的方法成员需要声明来源,具体地,是在程序中使用类名或对象名声明。,例2-2类变量和方法声明。 /程序名:Sample2_2.java class Rectangle /类声明float a,b; /成员变量声明Rectangle(float x,float y) /构造方法a=x; b=y;float area() /成员方法声明return a*b; public class Sample2_2 /类声明public static void main(String args) /

10、main()方法Rectangle rec; /声明对象recrec=new Rectangle(10,8); /为对象分配内存,使用new和类中的构造方法,System.out.println(“矩形的长为:“+rec.a); /引用类成员变量aSystem.out.println(“矩形的宽为:“+rec.b); /引用类成员变量bSystem.out.println(“矩形的面积为:“+rec.area(); /引用类成员方法area() ,运行结果如下: 矩形的长为:10.0 矩形的宽为:8.0 矩形的面积为:80.0,2.1.3 类的构造方法,构造方法用来初始化新创建的对象。类可以包

11、含一个或者多个构造方法,不同的构造方法根据参数的不同来决定要初始化的新对象的状态。所有的Java类都有构造方法,用来对新的对象进行初始化。构造方法与类的名字是相同的,且不声明返回值类型。当一个类有多个构造方法时,所有的构造方法的名字都是相同的,只是所带参数的个数和类型不同而已。编译器会根据参数列表的数目以及类型来区分这些构造方法,所以,当创建对象的时候,要根据它的参数是否与初始化的新对象相匹配来选择构造方法。,例2-3:构造方法。 /程序名:Sample2_3.java class Circle public Circle() /构造方法(无参数)r=0;public Circle(doubl

12、e R) /构造方法(带参数)r=R;double r; /成员变量声明double area() /成员方法声明return 3.14*r*r; /计算圆面积,void setR(double newR) /设置圆半径r=newR;double getR() /获取圆半径return r; public class Sample2_3public static void main(String args) Circle c0,c; /引用变量声明c0=new Circle(); /用无参数的构造方法创建对象c0c=new Circle(2.0); /用带参数的构造方法创建对象cSystem.

13、out.println(“圆1的半径为:“+c.getR();System.out.println(“圆1的面积为:“+c.area();,c.setR(5.0); System.out.println(“圆2的半径为:“+c.getR();System.out.println(“圆2的面积为:“+c.area();System.out.println(“圆3的半径为:“+c0.getR(); System.out.println(“圆3的面积为:“+c0.area(); ,运行结果如下: 圆1的半径为:2.0 圆1的面积为:12.56 圆2的半径为:5.0 圆2的面积为:78.5 圆2的半径

14、为:0.0 圆2的面积为:0.0 当用无参数的构造方法创建对象时,半径为0,而用带参数的构造方法创建对象时,半径为参数的值2.0。,2.1.4 类的成员变量,类的成员变量用于存储反映类属性的数据,和在方法中声明的局部变量是不同的,成员变量的作用域是整个类,而局部变量的作用域只是方法内部。声明成员变量的语法如下: public|protected|privatestaticfinaltransientvolatile 变量类型 变量名=表达式; public|protected|private:访问控制符,在后面的章节中介绍。 static:成员控制修饰符,说明该类型的变量为静态变量(或类变量)

15、。静态变量由该类的所有实例对象共享,在编译时,静态变量保存在为类声明的存储单元中,在访问静态变量时无须事先初始化它所在的类。没有用static修饰的变量称为实例变量。,final:常量声明修饰符,用该符号声明后,在程序的运行过程中不能再改变它的值,实际使用中,final常与static结合使用。如: static final int pi=3.14159; transient:存储控制临时变量修饰符,用来声明一个临时变量,在默认情况下,类中所有变量都是对象永久状态的一部分。当对象被存档时,这些变量必须同时被保存,但用transient限定的变量不属于对象的永久状态。如: transient i

16、nt temp; volatile:异步控制修饰符,表示多个并发线程共享的变量,使各个线程对该变量的访问能保持一致。如: volatile int v;,例2-4:类的成员变量和局部变量。 /程序名:Sample2_4.java class Variable /类声明int x=0,y=0,z=0; /类的成员变量void init(int a,int b) /类的成员方法x=a; y=b; int z=5; /局部变量System.out.println(“* 在init()方法中*“);System.out.println(“x=“+x+“ y=“+y+“ z=“+z); public class Sample2_4public static void main(String args)Variable v=new Variable(); /声明并创建类对象System.out.println(“*在init()方法之前*“);System.out.println(“x=“+v.x+“ y=“+ v.y+“ z=“+v.z);v.init(20,30); /调用init()方法System.out.println(“*在init()方法之后*“);System.out.println(“x=“+v.x+ “ y=“+ v.y+“ z=“+v.z);,

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

当前位置:首页 > 中学教育 > 初中教育

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