收藏 分享(赏)

面向对象思想之-- 理解类和对象.doc

上传人:myw993772 文档编号:6977098 上传时间:2019-04-29 格式:DOC 页数:5 大小:40KB
下载 相关 举报
面向对象思想之-- 理解类和对象.doc_第1页
第1页 / 共5页
面向对象思想之-- 理解类和对象.doc_第2页
第2页 / 共5页
面向对象思想之-- 理解类和对象.doc_第3页
第3页 / 共5页
面向对象思想之-- 理解类和对象.doc_第4页
第4页 / 共5页
面向对象思想之-- 理解类和对象.doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

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

2、我们将在下面进一步的考察它们.对象详论使用对象的一个关键是当你在浏览系统分析文档或者设计文档的时候如何来确定它们.因为对象一般代表人,地方或者事物,所以一个确定对象的基本的方法就是找出句子中所使用的名词.这里有一个简单的例子.在句子“一个顾客可以拥有多于一个的银行帐号“,我们就确定了两个对象,客户和帐号.在句子“ 小猫喵喵叫“ 中,我们能够确定一个对象,猫.类详论前面,我们学习了一个类是定义了对象如何动作以及当对象创建或者说实例化的时候应该包含些什么的实体.在对动物的讨论中,我们可以说,“狗儿汪汪叫,猫喵喵叫,鸭子嘎嘎叫.“确定句子中的对象我们就得到了狗,猫和鸭子.至于汪汪叫,喵喵叫,嘎嘎叫,

3、那都是我们对象发出的行为动作.要实现这些对象,我们需要创建三个对象分别叫 Dog,Cat 和 Duck.要实现它们的行为,我们可以为每一个这些对象创建代表每个对象发出的声音的方法,而且我们把这个方法叫做 speak 或者,如果我们发挥想象力的话还可以把这个方法叫做 sayHello.在程序的上下文中为了演示这些概念,让我们修改上篇文章中的 HelloWorld程序,添加这三个新对象并给它们中的每一个添加 sayHello 方法,如下所示:public class HelloWorldpublic static void main(String args)Dog animal1 = new Do

4、g();Cat animal2 = new Cat();Duck animal3 = new Duck();animal1.sayHello();animal2.sayHello();animal3.sayHello();class Dogpublic void sayHello()System.out.println(“Bark“);class Catpublic void sayHello()System.out.println(“Meow“);class Duckpublic void sayHello()System.out.println(“Quack“);在编译并运行了这个程序以后

5、,输出应该如下:BarkMeowQuack看看我们的程序,我们马上就注意到了一些事情:每个对象代表了一种动物,而每个对象实现了一个相同的方法,sayHello.假设我们想要给对象更多的功能以及用来代表对象所指的动物的方法和属性.比方说,我们可以添加一个方法来确定一个动物是不是哺乳类的,或者我们添加一个方法来确定一个动物是不是肉食性的.我们可以通过给每一个对象添加这两种方法来实现或者我们也能够使用 OOP的两个最强大的功能:继承和多态.因为所有的对象都代表一个对象,所以我们将创建一个被称为“基类“ 或是“超类“ 的类 ,它的名字是 Animal.我们然后可以让我们的对象从 Animal 类继承相

6、同的特点并强制每个对象只实现与 Animal 类不同的功能 .Java 用 extends 关键字指明一个类从另一个继承.让我们利用继承和多态的概念获得代码重用的好处来重建我们的程序并使得每个对象只实现与基类Animal 不同的功能:public class HelloWorldpublic 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

7、()+“, 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: “

8、 +animal3.isCarnivorous()+“, is a mammal: “ +animal3.isAMammal();abstract class Animalpublic boolean isAMammal()return(true);public boolean isCarnivorous()return(true);abstract public String getHello();class Dog extends Animalpublic String getHello()return(“Bark“);class Cat extends Animalpublic Stri

9、ng getHello()return(“Meow“);class Duck extends Animalpublic boolean isAMammal()return(false);public boolean isCarnivorous()return(false);public String getHello()return(“Quack“);在编译并运行我们的程序以后,输出应该如下:A dog says Bark, is carnivorous: true, is a mammal: trueA cat says Meow, is carnivorous: true, is a ma

10、mmal: trueA duck says Quack, is carnivorous: false, is a mammal: false看看我们的例子,你将发现我们定义了一个叫做 Animal 的新类,它定义了三个方法:isAMammal, isCarnivorous, 和 getHello.你一概还注意到了,我们在每个现存的类申明的前面都添加了 extends Animal 这个语句.这个语句告诉编译器这些对象是 Animal 类的子类.因为方法 isAMammal 和 isCarnivorous 都返回 true,所以 Dog 和 Cat 类用不着重新实现-即“重载“这两个方法.但是鸭

11、子既不是哺乳动物又不是肉食性的,所以 Duck 类需要重载这两种方法来返回正确的值.我们所有的对象都以自己独特的方式说“hello“,所以它们都需要重载 getHello 方法.因为每种动物说“hello“ 的方式都不同,所以我们在基类中将 getHello 方法申明为抽象的,而且我们没有给这个方法一个函数体.这就迫使 Animal 的每一个子类重载 getHello 方法并根据每一个特定动物的需要来定义它.因为我们将 getHello 方法申明为虚拟的,我们就不能直接实例化 Animal 对象.因此,我们需要将 Animal 类也申明为抽象的.我们通过在 Animal 类定义的开始行添加 abstract 关键字来实现这一点.子类重载它们基类的方法的能力就是多态.多态使得子类能够使用基类的方法或是在这些方法不足的时候重载它们.这就实现了代码重用,加快了代码的实现过程,而且它还隔离和程序中的 bug,使得程序的维护更容易.总结在本文中,我们学习了如何确定潜在的对象.我们还学习了如何使用继承和多态来加快我们的代码实现过程并隔离错误,这使得代码的维护过程更加容易.下一次,我们将展开讨论多态和继承的概念并开始我们对动态绑定的讨论.

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报