类和对象

类和对象是Java语言的重要概念,如何理解它们和应用它们,也是OOD和OOP的关键。

打个比方,若说类是图纸,那么对象就是按着图纸构造出来一个个实体;若说类是模型,那么对象就是根据模型生产出来的一个个产品;若是类是人,那么对象就是张三、李四、王五等实实在在的个体。通过这样的一个比方,想必对什么是类,什么是对象,以及类与对象的关系应该有了些认知。实际上,类就是对于某种有着共同属性和行为的物体的抽象表示,而对象基于这种物体的抽象表示下的具体实例化。简而言之,类就是对象的抽象化,而对象就是类的实例化。现以人为例,人所具有的共同属性,身高、体重、性别、姓名、种族、年龄等,而所具有的共同行为,吃饭、睡觉、工作、思考等,我们通过把这样的共同属性与行为给予高度抽象化,就可以设计成一个人类,而对于我们具体的个体,不管是你,还是他,又或许是我,都可以视为是由人类实例化的结果。由此观之,类和对象的关系实质是抽象和具体的关系,抽象的具体化,制造了对象;而具体的抽象化,构造了类。

当我们弄清楚了类和对象究竟是怎么回事后,那么如何去构造类呢?又如何去制造对象呢?同时,又如何去基于面向对象的思想去解决我们现实生活中的诸多问题呢?想必这是我们关心的,也是我们需要思考的。现以Java语言为例,简要介绍类和对象的设计与应用。先看如下代码:

/**
  *类描述:设计一个简单的人类。
  *属性:姓名、性别、身高、体重
  *行为:学习、工作
  */
public class Human {
  public void study() {
     System.out.println("好好学习");
  }

  public void doWork() {
      System.out.println("努力工作");
  }

   private String name;
   private char sex;
   private int height;
   private int weight;
}

类设计的语法格式:[修饰符] class 类名 { 类体 }

修饰符主要有public,abstract,final 和默认的,类名就是对所设计的类取一个通俗易懂的名字,通常首字母大写,并遵循命名的规则,类体包括类的行为部分和属性部分,前者使用各种方法来实现,后者使用各种数据成员来表示。不管是方法,还是数据成员,通过对其访问权限的设置,体现出OOP中的封装特性。这样做的好处,一是保护数据不轻易被更改,提升了数据的安全性;二是符合消息驱动的机制和面向接口编程的思想。关于如何设计类,关键在于根据实际的问题寻找到合适的共同属性与行为。这既需要丰富的经验,也需要活跃的思维。因此,有意识地自我训练基于类和对象的思维方式与方法,对OOD和OOP是大有裨益的。

当设计好类后,如何由类来生成对象呢?还是先看下面代码:

//基于Human类生成一个对象,并把其赋给对象的引用xiaoMing
Human xiaoMing = new Human();

对象设计的语法格式:new 类名()

使用关键字new来生成一个对象,在堆中开辟一块内存空间来存放new出来的对象。那么如何来使用该对象呢?通过由new出来的对象赋值给一个对象的引用,就可以使用该对象引用后接点运算符操控对象。

代码清单如下:

/**
  *类描述:设计一个简单的人类。
  *属性:姓名、性别、身高、体重
  *行为:学习、工作
  */
public class Human {
  public void study() {
     System.out.println("好好学习");
  }

  public void doWork() {
      System.out.println("努力工作");
  }

   private String name;
   private char sex;
   private int height;
   private int weight;
   
   public static void main(String[] args) {
       Human xiaoMing = new Human();
       xiaoMing.study();
       xiaoMing.doWork();
   }
}

运行结果如下:

总结:万事万物都是对象(everything is object),利用面向对象的思想去设计与编码。


你可能感兴趣的:(类和对象)