Java入门7:面向对象程序设计

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)

评论: 0 | 引用: 0 | 浏览:
昵 称:
邮 箱:
网 站:
内 容:
   
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。