Java入门7:面向对象程序设计
发布:hfhyt 日期:2008年10月20日
Java语言是一种面向对象的语言,在Java中除了8中基本的数据类型的数据外,其它一切均为对象。本节内容我们来一同掌握Java的面向对象特性,主要内容有:理解面向对象的概念、掌握类的定义、掌握对象的创建、了解方法的重载、掌握构造方法使用。
一、面向对象的概念
现实中的一切事物皆为对象
对象有其自身的(特征)属性,而且可以进行某些活动。如公交汽车有四个轮子(属性),有若个座位(属性)等,公交汽车能载客(活动),能鸣笛(活动);移动电话有显示屏(属性),有按键(属性),能够进行通信(活动),还能够上网(活动)等。
其实,上面的描述已经概括了对象的两个要素:
- 属性:对象的特征
- 行为:对象所能执行的活动
类描述了一组有相同特性(属性)和相同行为(方法)的对象
- 类是具有共同属性和行为的对象的抽象。
- 类可以定义为数据和方法的集合。
- 类也称为模板,因为它们提供了对象的基本框架。
二、类和对象的关系
类与对象是抽象与具体的关系,类描述了同种对象的共同特征和行为,而对象是类的具体体现。建筑图纸规定了房屋的所有特征,如房屋的面积、房屋的高度等,但这些只是停留在图纸上;只有根据建筑图纸建造了一座座房屋后,房屋的面积、高度等特征才得以体现。
从先后关系看,应是现有类,然后才有与之对应的对象。根据类创建对象的过程我们称之为实例化(根据建筑图纸建造房屋),对同种的多个对象的共性进行概括等到类(这是一个从具体到抽象的过程)。
三、类的定义
定义类就是定义类的属性(特征)、行为(方法)和关系。
在类中,属性是通过成员变量体现的,而行为是用成员函数(又称为方法)实现的。怎样去定义一个类的成员变量?
1、定义成员变量
class Person {
String name; // 属性-名字
int age; // 属性-年龄
}
2、定义成员方法
定义方法的一般格式:
[access] type methodname1( [parameter-list] ) {
//方法体
}
上面格式中,[ ]内部分为可选项,视具体情况取舍。各部分说明如下:
- type —— 方法的返回数据类型。方法调用后一般会得到一个结果数据,type即为该数据的类型,type可以是前面介绍过的8种基本数据类型之一,也可以是引用类型(如类、接口、数组),由解决的问题来决定;如果方法调用后不需要得到一个结果数据,则type设为void,如我们熟悉的main方法便是如此。
- methodname —— 方法的名称。由程序员按照Java语言标识符的命名规则所取的名称。
- parameter-list —— 参数变量列表。提供方法执行时所需的数据
- access —— 方法的可访问权限。决定方法在程序中哪些地方可见。
- 方法体 —— 完成方法所需功能的语句组合,注意方法体由一对“{ }”所包含。
class Person {
string name;
int age;
public void say( ){
System.out.println( "Hello!" );
}
}
四、对象的创建与使用
1、对象的创建及内存分配
new关键字用于创建对象,如: Person p1 = new Person( ) ;
计算机程序执行时的内存空间主要有两类:
- 栈空间 —— 局部变量分配在栈空间,随着函数(或语句块)开始运行而分配,随着函数(或语句块)运行的结束而销毁。
- 堆空间 —— 对象和数组内存空间分配在堆空间,其内存的回收由JVM的垃圾回收进行。
创建一个对象后,其内存分配示意图如下:
同一个类的多个对象的内存分配:
- 成员变量:各对象独有
- 成员方法:各对象共享
Person p1 = new Person( ) ;
Person p2 = new Person( ) ;
2、成员变量的初始化
对象的成员变量如在定义时没有指定初值,在创建时自动进行初始化,按下表进行:
| 数据类型 | 默认值 |
| 整数类型(byte、short、int、long) | 0 |
| 实数类型(float、double) | 0.0 |
| 字符型char | '\u0000' |
| 布尔型boolean | false |
| 引用类型(数组、接口、类) | null |
3、对象的使用
对象的成员使用方法:
- 对象句柄.对象成员
- 对象句柄.对象方法
【例4.1】
class Person {
string name;
int age;
public void say( ){
System.out.println( "My name is " + name +" , and I am " + age + " years old." );
}
}
public class TestPerson {
public static void main ( String[ ] args ) {
Person p1 = new Person( );
p1.age = 30;
p1.name = "Tom" ;
p1.say( ) ;
}
}
4、消息
多个对象相互作用才会完成复杂的行为。对象和对象之间是通过传递消息来完成相互通信的。一个消息由三方面内容组成:
- 消息的接收者,即消息的目标对象;
- 接收对象采用的方法;
- 执行方法所需用的参数(Parameters)。
五、方法的重载
一个类的方法中可有多个同名方法。这样做的条件是:每个同名方法的参数的类型和(或)数量必须是不同的。这种语法现象称之为方法的重载。
当Java 调用一个重载方法时,参数与调用参数匹配的方法被执行。
六、构造函数(构造方法)
构造方法:是一个在创建对象时被自动调用的特殊方法。
作用:
- 为对象进行初始化(成员变量)工作;
- 类的实例产生时构造方法就会被自动调用.
构造方法的特征:
- 方法名与类名相同;
- 不含返回类型;
- 不能在方法中用return语句返回一个值;
- 在类实例化时,它会由系统自动调用;
【例4.2】使用构造方法重新实现例4.1。
每个类都至少有一个构造方法,如果没有定义构造方法,JVM(虚拟机)会在编译时自动生成一个不带参数也无方法体的构造器。如
public Person( ){ }
如果在一个类中定义多个构造方法,此时构造方法发生了重载。
七、练习
1、定义一个矩形类(Rectangle),该矩形类成员:
(1) 属性:长、宽
(2)方法:计算矩形的面积
并在主方法中测试该类。
2、定义一个圆类(Circle),该类实现计算圆的面积和周长的功能,并在主方法中测试该类。
Tags: Java入门
相关文章:Java入门6:循环结构程序 (2008-10-8 19:42:59)
Java入门5:分支结构程序 (2008-10-5 16:57:6)
Java入门4:运算符与类型转换 (2008-10-5 11:9:23)
Java入门3:类与对象的简单使用 (2008-10-4 17:9:3)
Java入门2:数据类型 (2008-10-4 10:20:46)
Java入门1:Java基础之基础 (2008-10-3 22:32:37)
上一篇
下一篇