做一个饲养员给动物喂食物的例子体现JAVA中的面向对象思想,接口(抽象类)的用处-阿里云开发者社区

开发者社区> 广贤> 正文

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

简介:
+关注继续查看

做一个饲养员给动物喂食物的例子体现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()); 
    } 
}

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
一起谈.NET技术,对抽象编程:接口和抽象类
  1. 引言   在我之前的一篇post 《抽象类和接口的谁是谁非 》中,和同事管伟的讨论,得到很多朋友的关注,因为是不成体系的论道,所以给大家了解造成不便,同时关于这个主题的系统性理论,我认为也有必要做以总结,因此才有了本篇的新鲜出炉。
764 0
Android JAVA 语言基础例子代码
Android的界面一般都是java开发的,因此对于c++,.net人员来说理解和编写有一个适应过程,最近参考了一下资料,把这些涉的一些java基础使用以例子代码的形式总结起来,记录了这个平台的熟悉过程。
861 0
深入理解Java的接口和抽象类
深入理解Java的接口和抽象类
1856 0
Java入门 - 面向对象 - 04.抽象类
在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。 抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。 由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。也是因为这个原因,通常在设计阶段决定要不要设计抽象类。 父类包含了子类集合的常见的方法,但是由于父类本身是抽象的,所以不能使用这些方法。 在Java中抽象类表示的是一种继承关系,一个类只能继承一个抽象类,而一个类却可以实现多个接口。
153 0
java基础之:匿名内部类应用例子一
一:接口 1 package com.yeepay.sxf.testclassforinner; 2 3 /** 4 * 回调接口. 5 * @author shangxiaofei 6 * 7 */ 8 public interface CallBa...
780 0
Java入门 - 面向对象 - 06.接口
接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以 interface 来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。 接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。 除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。 接口无法被实例化,但是可以被实现。一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。 在 Java 中,接口类型可用来声明一个变量,他们可以成为一个空指针,或是被绑定在一个以此接口实现的对象。
199 0
+关注
241
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载