做一个饲养员给动物喂食物的例子体现JAVA中的面向对象思想,接口(抽象类)的用处

interface Animal{

//动物的接口    public void eat(Food food);

//接口中只有抽象的方法和静态常量!这里void前面省略了abstract。同样,变量可以省略static final}

class Cat implements Animal

//一种动物类:猫

{

public void eat(Food food)

//这里是对上面的接口中已经有的方法进行了覆盖也叫重写,这一步是必须的!    {

System.out.println("小猫吃"+food.getName());

}

}

class Dog implements Animal

//一种动物类:狗{

public void eat(Food food)

//覆盖    {

System.out.println("小狗啃"+food.getName());

}

}

abstract class Food

//食物抽象类 。抽象类不能创建对象,这和C++一样

{

protected String name;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

}

class Fish extends Food

//一种食物类:鱼,继承了Food类

{

public Fish(String name) {

//构造函数      this.name = name;

}

}

class Bone extends Food

//一种食物类:骨头,继承了Food类{

public Bone(String name) {

//构造函数

this.name = name;

}

}

class Feeder

//饲养员类 ,这是个很一般的类。。。

{

public void feed(Animal animal,Food food)

//饲养员给某种动物喂某种食物    {

animal.eat(food);

}

}

public class TestFeeder

//测试饲养员给动物喂食物

{

public static void main(String[] args) {

//这里顺便说下,只有在public类中才有main函数!一个这样的程序中也只有一个public类!      Feeder feeder=new Feeder();

Animal animal=new Dog();

//animal引用Dog类对象      Food food=new Bone("肉骨头");

//这里创建父类引用子类对象,用food引用Bone对象

feeder.feed(animal,food);

//给狗喂肉骨头

animal=new Cat();

//这里又将animal引用Cat类的对象      food=new Fish("鱼");

//同样,用food引用Fish类对象,这和上面一样,充分体现了food和 animal只是两个方便引用的名称,是通过这两个名称来引用对象的      feeder.feed(animal,food);

//给猫喂鱼

}

}

/*接口和继承有什么相似和不同,我只是模糊的了解一些,却说不太出来,也希望老师在讲解这部分的时候能详细些。至于java中的继承和C++的继承一比较,会发现JAVA只

支持单继承,即只能继承一个父类,而c++却能继承多个父类!但通过接口,java可以实现多个接口,接口也可以继承接口。

ps:将上面的题目接口的部分改成继承也是可以的,很容易。。。如下abstract class Animal{

public abstract void eat(Food food);

}

class Cat extends Animal

{

public void eat(Food food)

{

System.out.println("小猫吃"+food.getName());

}

}

class Dog extends Animal  {      public void eat(Food food)      {        System.out.println("小狗啃"+food.getName());      }  }

java饲养员喂动物_做一个饲养员给动物喂食物的例子体现JAVA中的面向对象思想,接口(抽象类)的用处...相关推荐

  1. java饲养员喂动物_体现JAVA中的面向对象思想,接口(抽象类)的用处 :饲养员给动物喂食物 | 学步园...

    package com.softeem.demo; /** *@authorleno *动物的接口*/ interface Animal { publicvoid eat(Food food); } ...

  2. java饲养员喂动物_体现JAVA中的面向对象思想,接口(抽象类)的用处 :饲养员给动物喂食物...

    package com.softeem.demo; /** *@authorleno *动物的接口*/ interface Animal { publicvoid eat(Food food); } ...

  3. 文件上传java前端怎么写_做一个文件上传,前端是ajax提交数据后台是java,这个错误怎么办...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 严重: Servlet.service() for servlet [dispatcherServlet] in context with path [/ ...

  4. java 最大子数组_求一个数组中子数组的最大和算法(Java实现)

    前几天在微信订阅号"待字闺中"中看到的一篇文章<小技巧求一个数组中子数组的最大和>,提供下Java的实现,并且在对题目做下小修改,本来打算直接在微信里直接回复,但是发现 ...

  5. java字符存储_用java的类集框架做一个字符存储器(15)

    11.这是java的关于java的类集框架做一个字符存储器的源代码可以直接进行编译运行,希望大家能够从中获益良多. package niming; //导入ArrayList这个类 import ja ...

  6. javaweb做什么能赚钱_做一个完整的Java Web项目需要掌握的技能

    原文链接:http://blog.csdn.net/JasonLiuLJX/article/details/51494048 最近自己做了几个Java Web项目,有公司的商业项目,也有个人做着玩的小 ...

  7. java工程师座右铭_做一个座右铭工具每天激励自己

    想法 新年第一篇文章,最近做英语相关的服务做多了,发现有人在做座右铭的东西,我也有了个想法就是想做一个可以随机一个座右铭的工具,每天激励自己,或者看看别人怎么激励自己,顺便学英语. 实施 技术选型就是 ...

  8. 学java 开发会掉头_作为一个全新的开发人员,我会学到什么

    学java 开发会掉头 重点 (Top highlight) It's been five years since I learned to code and changed careers. 自从我 ...

  9. Java web 服务器 搭建_搭建一个java web服务端

    最近也是做了一个简单的java web 项目,由于以前也是没接触过,在这里记录下搭建一个web服务端的过程. 一般我们做一个服务端要么在本地自己的电脑上先安装环境,一般是windows系统,主要安装j ...

最新文章

  1. MySQL数据库将查询结果插入到其它表中
  2. XML DOM – 导航节点概述
  3. 2016-8-13第二周作业
  4. HTML中有关表格的基本属性知识
  5. MVVMLight 实现指定Frame控件的导航
  6. php 中 t怎么打开,怎么在PHP项目中实现一个explort() 功能
  7. ArcGIS Server for JavaScript 3.3 的安装部署
  8. python自动登录百度空间
  9. C# 使用printDocument1.Print打印时不显示 正在打印对话框(里面还有一个讨厌的取消按钮)...
  10. 无法连接iphone软件更新服务器_上海腾科教育今日分享——提示“无法连接到服务器”的解决办法...
  11. 四川大学计算机学院琚生根教授,基于卷积神经网络和自注意力机制的文本分类模型...
  12. 正向代理 smtp imap_Nginx代理模式及区别
  13. 先学python再学c_初学者Python和C先学哪个好?
  14. 360搜索引擎能否给苦逼的站长们带来希望?
  15. J2EE基础教程(3):Spring框架
  16. cad2008安装教程_品茗BIM、平面图软件安装教程
  17. Odin靶机WriteUp
  18. Memcached安全基线
  19. C语言复健(数组) 珠心算测验
  20. Cocoa Touch框架浅析

热门文章

  1. uefi模式装gho格式系统失败的原因
  2. linux--shell--crontab定义运行任务
  3. 学习iOS 黑魔法 笔记
  4. C文件访问 introduce
  5. 操作系统课程设计--模拟时间片轮转法
  6. 微信QQ打开网页时提示用浏览器打开
  7. java.sql.SQLException: Access denied for user ‘Xs‘@‘localhost‘ (using password: YES) 出现的原因和解决办法
  8. date在java中是什么类型_java中date 是什么类型
  9. 真实烟雾效果PS笔刷
  10. 卷积神经网络——实例分割之Mask R-CNN论文翻译