一、需求:对猫跟狗进行训练,加入跳高功能,采用抽象类和接口实现,并创建测试类测试

二、分析:

1.定义接口(Jummping)

成员方法 跳高();

/*定义跳高接口
* */
public interface Jumpping {
  public void jump();
}

2.定义抽象动物类(Animal)

成员变量为姓名,年龄;无参有参构造方法;成员方法:get/set方法,eat()

/*定义抽象类
* */
public abstract class Animal {
  private String name;
  private int age;
  //定义无参构造方法
  public Animal(){}
  public String getName() {
      return name;
  }
  public void setName(String name) {
      this.name = name;
  }
  public int getAge() {
      return age;
  }
  public void setAge(int age) {
      this.age = age;
  }
  //定义有参构造方法
  public Animal(String name ,int age){
      this.age= age;
      this.name= name;
  }
  //定义成员方法
  public abstract void eat();
  }

3.定义具体猫类(cat),继承动物类,实现跳高接口

无参有参构造方法;成员方法 重写 eat()、jump();定义特有方法 play()

/*定义具体猫类继承动物类
* */
public class Cat extends Animal implements Jumpping {
  public Cat() {
  }
  public Cat(String name,int age) {
      super(name,age);
  }
  //重写吃饭方法
  @Override
  public void eat() {
      System.out.println("猫吃饭");
  }
  @Override//重写接口方法
  public void jump() {
      System.out.println("猫跳高");
  }
  //定义成员方法
  public void play() {
      System.out.println("玩耍");
  }
}

4.定义具体狗类(dog),继承动物类,实现跳高接口

无参有参构造方法;成员方法 重写 eat()、jump();定义特有方法 play()

/*定义具体狗类,继承抽象动物类
* */
public class Dog extends Animal implements Jumpping {
  //定义无参构造方法
  public Dog() {
  }
  //定义有参构造方法
  public Dog(String name, int age) {
      super(name,age);
  }
  //定义成员方法
  public void play() {
      System.out.println("狗玩耍");
  }
  //重写接口方法
  @Override
  public void jump() {
      System.out.println("狗跳高");
  }
  //重写吃饭方法
  @Override
  public void eat() {
      System.out.println("狗吃肉");
  }
}

5.定义测试类(AnimalDemo)测试


/*动物测试类
* */
public class AnimalDemo {
  public static void main(String[] args) {
      //使用多态创建猫类对象
//       Animal a = new Cat();
//       a.name = "小猫";
//       a.age = 18;
//       System.out.println(a.name + a.age);
//       a.eat();
//       向下转型,调用猫类特有方法
//       Cat c = (Cat) a;
//       c.jump();
//       c.play();
//     创建对象调用猫类
      Cat c=new Cat("加菲",18);
      System.out.println(c.getName()+c.getAge());
      c.eat();
      c.jump();
      c.play();
      System.out.println("--------------------------------------------");
//     创建对象调用猫类
      Dog d = new Dog();
      d.setName("小狗");
      d.setAge(180);
      System.out.println(d.getName()+d.getAge());
      d.eat();
      d.jump();
      d.play();
  }
}

Java案例——猫与狗(接口版)的更多相关文章

  1. java基础(四)-----抽象类与接口

    抽象类与接口是java语言中对抽象概念进行定义的两种机制,正是由于他们的存在才赋予java强大的面向对象的能力.他们两者之间对抽象概念的支持有很大的相似,甚至可以互换,但是也有区别. 一.抽象类 我们 ...

  2. 3、java基础:抽象类与接口的区别

    抽象类 我们都知道在面向对象的领域一切都是对象,同时所有的对象都是通过类来描述的,但是并不是所有的类都是来描述对象的.如果一个类没有足够的信息来描述一个具体的对象,而需要其他具体的类来支撑它,那么这样 ...

  3. Mybatis高级:Mybatis注解开发单表操作,Mybatis注解开发多表操作,构建sql语句,综合案例学生管理系统使用接口注解方式优化

    知识点梳理 课堂讲义 一.Mybatis注解开发单表操作 *** 1.1 MyBatis的常用注解 之前我们在Mapper映射文件中编写的sql语句已经各种配置,其实是比较麻烦的 而这几年来注解开发越 ...

  4. Java第一篇:为什么是接口?

    好家伙, 写了一道Java作业:    一道简单的接口练习题   而答案也比较简单 public class Demo1 { public static void main(String[] args ...

  5. 黑马程序员——JAVA基础之抽象和接口 , 模版方法设计模式

    ------- android培训.java培训.期待与您交流! ---------- 抽象定义:           抽象就是从多个事物中将共性的,本质的内容抽取出来.           例如:狼 ...

  6. 【深度学习】keras + tensorflow 实现猫和狗图像分类

    本文主要是使用[监督学习]实现一个图像分类器,目的是识别图片是猫还是狗. 从[数据预处理]到 [图片预测]实现一个完整的流程, 当然这个分类在 Kaggle 上已经有人用[迁移学习](VGG,Resn ...

  7. Java开发知识之Java的继承多态跟接口*

    Java开发知识之Java的继承多态跟接口 一丶继承 1.继承的写法 在Java中继承的 关键字是 extends 代表一个类继承另一个类. 继承的含义以及作用: 继承就是基于某个父类的扩展.制定出来 ...

  8. java编程思想第九章接口

    9.1抽象类和抽象方法 为什么要有抽象类? 是希望通过通用接口操作一系列类. 那么抽象类的形式是什么样的呢? 声明类的使用使用abstract关键字,且在该类中应该具有抽象方法. 注:抽象方法被关键字 ...

  9. [置顶] 我的 Java 后端书架 (2016 年暖冬版)

    转自:  http://calvin1978.blogcn.com/articles/bookshelf16.html 我的 Java 后端书架 (2016 年暖冬版) 本书架主要针对 Java 后端 ...

随机推荐

  1. Docker创建私有镜像仓库

    Docker官方提供了一个工具docker-registry,可以借助这个工具构建私有镜像仓库: 1.拉取registry镜像 # docker pull registry//可以使用 docker ...

  2. Kubernetes家族容器小管家Pod在线答疑?

    Kubernetes家族容器小管家Pod在线答疑 不知道学习k8s的小伙伴们有没有跟我一样的疑问? k8s为什么不是直接运行容器,而是让Pod介入? Pod又是什么?为什么在应用容器化如此普遍的情况下 ...

  3. java中最简单的计算执行时长的方式

    日常在做一些性能测试的时候会通过执行时间来判断执行时长,java中最简单的方式如下: //开始时间 long startL= new Date().getTime(); //这里需要导入 java.u ...

  4. RHCSA阶段笔记

    命令终端字段含义介绍 [root@localhost ~]# 解释: root:当前登录系统用户名(root超级管理员) localhost :当前主机名 :当前用户所在目录( 为家目录) ,root ...

  5. 基于PXIe接口的CoaXpress高速相机图像采集、回放

    PXIe简介 PCI eXtensions for Instrumentation or PXI is a computer-based hardware and software platform ...

  6. HMS Core积极探索基于硬件耳返的功能,帮助唱吧整体唱歌延迟率降低60%

    唱吧的使命是让唱歌更简单.让生活更美好,其布局的K歌业务专注于让曲库更全.音质更好,开创了同框合唱.弹唱等有意思的游戏类K歌玩法.为了让用户拥有更加沉浸的娱乐体验,唱吧与HMS Core积极探索基于硬 ...

  7. MySQL基本数据类型与约束条件

    昨日内容回顾 数据存储的演变 # 方向: 朝着更加统一和方便管理 数据库的发展史 # 由本地保存逐步演变为线上保存 数据库的本质 # 本质上就是一款CS架构的软件 """ ...

  8. .NET 云原生架构师训练营(权限系统 代码实现 Identity)--学习笔记

    目录 开发任务 代码实现 开发任务 DotNetNB.Security.Core:定义 core,models,Istore:实现 default memory store DotNetNB.Secu ...

  9. INTERSPEECH 2014 | 1-Bit Stochastic Gradient Descent and its Application to Data-Parallel Distributed Training of Speech DNNs

    这篇文章之前也读过,不过读的不太仔细,论文中的一些细节并没有注意到.最近为了写开题报告,又把这篇论文细读了一遍.据笔者了解,这篇论文应该是梯度量化领域的开山之作,首次使用了梯度量化技术来降低分布式神经 ...

  10. 使用helm安装ingress,实现用域名的方式访问k8s内部应用

    k8s集群版本 k8s集群版本是1.22 提前部署好nginx服务和创建好svc deployment方式部署的nginx服务,1个副本 创建的服务 通过服务可以代理到nginx服务 curl 10. ...