OOP: 理解类和对象(1)

原创 2001年09月25日 09:29:00
OOP: 理解类和对象(1)

[ 作者: 不详   添加时间: 2001-9-7 8:10:45 ]


来源:www.zdnet.com.cn

上一次在"使用Java开始面向对象的编程"这篇文章中,我们学习了一个编程语言要真正成为面向对象的,它应该支持信息隐藏/封装,多态,继承和动态绑定.另外,我们知道了Java完全支持这些功能,而且知道了因为Java是一种解释性的语言并运行在虚拟机的内部,所以由Java写成的任何程序都可以在任何支持 Java虚拟机(JVM)的操作系统上运行.我们还明白了对象是代表现实生活中事物的软件-编程模型以及对象是由它们的状态和行为定义的.最后,我们知道了Java中除了原始数据对象以外一切都是对象.

因为这种程序设计风格中的这许多内容都和对象以及类有关,我们将在下面进一步的考察它们.

对象详论
使用对象的一个关键是当你在浏览系统分析文档或者设计文档的时候如何来确定它们.因为对象一般代表人,地方或者事物,所以一个确定对象的基本的方法就是找出句子中所使用的名词.这里有一个简单的例子.在句子"一个顾客可以拥有多于一个的银行帐号",我们就确定了两个对象,客户和帐号.在句子"小猫喵喵叫"中,我们能够确定一个对象,猫.

类详论
前面,我们学习了一个类是定义了对象如何动作以及当对象创建或者说实例化的时候应该包含些什么的实体.在对动物的讨论中,我们可以说,"狗儿汪汪叫,猫喵喵叫,鸭子嘎嘎叫."确定句子中的对象我们就得到了狗,猫和鸭子.至于汪汪叫,喵喵叫,嘎嘎叫,那都是我们对象发出的行为动作.

要实现这些对象,我们需要创建三个对象分别叫Dog,Cat和Duck.要实现它们的行为,我们可以为每一个这些对象创建代表每个对象发出的声音的方法,而且我们把这个方法叫做speak或者,如果我们发挥想象力的话还可以把这个方法叫做sayHello.

在程序的上下文中为了演示这些概念,让我们修改上篇文章中的HelloWorld程序,添加这三个新对象并给它们中的每一个添加sayHello方法,如下所示:

public class HelloWorld
{
   public static void main(String[] args)
   {
       Dog animal1 = new Dog();
       Cat animal2 = new Cat();
       Duck animal3 = new Duck();
       animal1.sayHello();
       animal2.sayHello();
       animal3.sayHello();
   }
}

class Dog
{
   public void sayHello()
   {
       System.out.println("Bark");
   }
}

class Cat
{
   public void sayHello()
   {
       System.out.println("Meow");
   }
}

class Duck
{
   public void sayHello()
   {
       System.out.println("Quack");
   }
}

在编译并运行了这个程序以后,输出应该如下:
Bark
Meow
Quack

看看我们的程序,我们马上就注意到了一些事情:每个对象代表了一种动物,而每个对象实现了一个相同的方法,sayHello.假设我们想要给对象更多的功能以及用来代表对象所指的动物的方法和属性.比方说,我们可以添加一个方法来确定一个动物是不是哺乳类的,或者我们添加一个方法来确定一个动物是不是肉食性的.我们可以通过给每一个对象添加这两种方法来实现或者我们也能够使用OOP的两个最强大的功能:继承和多态.

因为所有的对象都代表一个对象,所以我们将创建一个被称为"基类"或是"超类"的类,它的名字是Animal.我们然后可以让我们的对象从Animal类继承相同的特点并强制每个对象只实现与Animal类不同的功能.

Java用extends关键字指明一个类从另一个继承.让我们利用继承和多态的概念获得代码重用的好处来重建我们的程序并使得每个对象只实现与基类Animal不同的功能:

public class HelloWorld
{
   public static void main(String[] args)
   {
       Dog animal1 = new Dog();
       Cat animal2 = new Cat();
       Duck animal3 = new Duck();
       System.out.println("A dog says " +animal1.getHello()
       +", is carnivorous: " +animal1.isCarnivorous()
       +", is a mammal: " +animal1.isAMammal());

       System.out.println("A cat says " +animal2.getHello()
       +", is carnivorous: " +animal2.isCarnivorous()
       +", is a mammal: " +animal2.isAMammal());

       System.out.println("A duck says " +animal3.getHello()
       +", is carnivorous: " +animal3.isCarnivorous()
       +", is a mammal: " +animal3.isAMammal());
   }
}

abstract class Animal
{
   public boolean isAMammal()
   {
       return(true);
   }

   public boolean isCarnivorous()
   {
       return(true);
   }

   abstract public String getHello();
}

class Dog extends Animal
{
   public String getHello()
   {
       return("Bark");
   }
}

class Cat extends Animal
{
   public String getHello()
   {
       return("Meow");
   }
}

class Duck extends Animal

如果理解oop

OOP(object oriented programming),即面向对象编程,其中两个最重要的概念就是类和对象。 世间万物都具有自身的属性和方法,通过这些属性和方法可以区分出不同的物质。 属性...
  • lerdor
  • lerdor
  • 2012年10月15日 21:24
  • 2963

java OOP 类和对象

OOP:Object Oriented Programming(面向对象编程) 类和对象 类:是对象的模板,是对一类事物的描述,是抽象的概念上的定义。 对象:对象是类的实例。对象在构造时以类为模...
  • BlogGetBetter
  • BlogGetBetter
  • 2017年04月02日 15:49
  • 192

OOP: 理解类和对象 (转载)

因为这种程序设计风格中的这许多内容都和对象以及类有关,我们将在下面进一步的考察它们. 对象详论使用对象的一个关键是当你在浏览系统分析文档或者设计文档的时候如何来确定它们.因为对象一般代表人,地方或者事...
  • PerseusYan
  • PerseusYan
  • 2005年04月11日 22:28
  • 777

OOP: 理解类和对象

Thursday, September 6 2001 2:30 PM 上一次在"使用Java开始面向对象的编程"这篇文章中,我们学习了一个编程语言要真正成为面向对象的,它应该支持...
  • botree
  • botree
  • 2004年07月05日 19:55
  • 599

一、OOP概念

OOP基本概念 软件的对象是自然对象的抽象表示,软件就是逼真的表达自然界的实际景象,于是人们心中构思的软件和眼中所见到的世界是一致的。软件是自然界实况的抽象,在编写软件程序时候,世界万物皆是对象。 ...
  • syc434432458
  • syc434432458
  • 2016年05月27日 16:43
  • 749

OOP: 理解类和对象(2)

OOP: 理解类和对象(2) [ 作者: 不详   添加时间: 2001-9-7 8:10:45 ]{   public boolean isAMammal()   {       return(fa...
  • zou5655
  • zou5655
  • 2001年09月25日 09:30
  • 650

OOP思想应该怎样来理解?

它强调对象的“抽象”、“封装”、“继承”、“多态”。  OOP思想浅谈 收藏 07年11月27号在校内举办了第一次技术讲座,主题是Java now and future.和以往的同主题的讲座不同,我在...
  • zyyr365
  • zyyr365
  • 2009年07月07日 16:12
  • 11191

java中OOP的概念之我见

OOP,面向对象编程,照我的理解就是把现实社会中的各类事物 通过抽取它们的共同特性映射到计算机模型当中的类,这些类有 它们各有的数据结构,也就是属性,以及它们各有的功能,也就是 方法,再通过创建...
  • qq_24693837
  • qq_24693837
  • 2017年02月07日 14:16
  • 1179

如何理解面向对象编程(OOP)

想要理解OOP,首先需要清楚什么是对象。            所谓对象就是由一组数据结构和处理它们的方法组成的,划重点 “数据” 包括对象的特性、状态等的静态信息; “方法” 也就是行为,包括该对象...
  • zhouying_12345
  • zhouying_12345
  • 2017年04月27日 09:23
  • 376

重新理解OOP(java)

面向对象   面向过程    面向对象主流   对象   一些事物的集合体  具有某些属性和 功能   对面的三大特征   继承  封装  多态      分别解释三大...
  • a06963938
  • a06963938
  • 2016年05月03日 11:32
  • 393
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:OOP: 理解类和对象(1)
举报原因:
原因补充:

(最多只允许输入30个字)