Java案例——猫与狗(接口版)
一、需求:对猫跟狗进行训练,加入跳高功能,采用抽象类和接口实现,并创建测试类测试
二、分析:
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案例——猫与狗(接口版)的更多相关文章
- java基础(四)-----抽象类与接口
抽象类与接口是java语言中对抽象概念进行定义的两种机制,正是由于他们的存在才赋予java强大的面向对象的能力.他们两者之间对抽象概念的支持有很大的相似,甚至可以互换,但是也有区别. 一.抽象类 我们 ...
- 3、java基础:抽象类与接口的区别
抽象类 我们都知道在面向对象的领域一切都是对象,同时所有的对象都是通过类来描述的,但是并不是所有的类都是来描述对象的.如果一个类没有足够的信息来描述一个具体的对象,而需要其他具体的类来支撑它,那么这样 ...
- Mybatis高级:Mybatis注解开发单表操作,Mybatis注解开发多表操作,构建sql语句,综合案例学生管理系统使用接口注解方式优化
知识点梳理 课堂讲义 一.Mybatis注解开发单表操作 *** 1.1 MyBatis的常用注解 之前我们在Mapper映射文件中编写的sql语句已经各种配置,其实是比较麻烦的 而这几年来注解开发越 ...
- Java第一篇:为什么是接口?
好家伙, 写了一道Java作业: 一道简单的接口练习题 而答案也比较简单 public class Demo1 { public static void main(String[] args ...
- 黑马程序员——JAVA基础之抽象和接口 , 模版方法设计模式
------- android培训.java培训.期待与您交流! ---------- 抽象定义: 抽象就是从多个事物中将共性的,本质的内容抽取出来. 例如:狼 ...
- 【深度学习】keras + tensorflow 实现猫和狗图像分类
本文主要是使用[监督学习]实现一个图像分类器,目的是识别图片是猫还是狗. 从[数据预处理]到 [图片预测]实现一个完整的流程, 当然这个分类在 Kaggle 上已经有人用[迁移学习](VGG,Resn ...
- Java开发知识之Java的继承多态跟接口*
Java开发知识之Java的继承多态跟接口 一丶继承 1.继承的写法 在Java中继承的 关键字是 extends 代表一个类继承另一个类. 继承的含义以及作用: 继承就是基于某个父类的扩展.制定出来 ...
- java编程思想第九章接口
9.1抽象类和抽象方法 为什么要有抽象类? 是希望通过通用接口操作一系列类. 那么抽象类的形式是什么样的呢? 声明类的使用使用abstract关键字,且在该类中应该具有抽象方法. 注:抽象方法被关键字 ...
- [置顶]
我的 Java 后端书架 (2016 年暖冬版)
转自: http://calvin1978.blogcn.com/articles/bookshelf16.html 我的 Java 后端书架 (2016 年暖冬版) 本书架主要针对 Java 后端 ...
随机推荐
- Tomcat服务部署及优化
Tomcat 服务部署及优化 1.Tomcat简介 2.Tomcat 服务安装及部署 3.Tomcat虚拟主机配置 4.Tomcat 优化 1.Tomcat简介: 概述: Tomcat是Java语言开 ...
- 拔掉网线后, 原本的 TCP 连接还存在吗?
大家好,我是小林. 今天,聊一个有趣的问题:拔掉网线几秒,再插回去,原本的 TCP 连接还存在吗? 可能有的同学会说,网线都被拔掉了,那说明物理层被断开了,那在上层的传输层理应也会断开,所以原本的 T ...
- etcd受损节点重新加入集群
文章目录 查看当前集群状态 删除受损etcd节点的数据 数据受损节点重新加入集群 修改etcd启动参数,重启etcd 由于自己的误操作,将A节点的etcd备份数据复制到B节点的etcd备份节点目录下, ...
- Redis_RDB持久化之写时复制技术的应用
背景: 最近生产环境中某个Set的Redis集群经常出现短暂的内存降低现象,经过查看日志是因为在RDB持久化所造成的内存突降(日志中:RDB: 4929 MB of memory used by co ...
- 提权辅助工具:Windows--exploit-suggester.py安装及使用
下载地址 https://github.com/AonCyberLabs/Windows-Exploit-Suggester1.安装xlrd包(注意python2.3版本的pip问题) ...
- HTTP攻击与防范-命令注入攻击
实验目的 1.了解命令注入攻击攻击带来的危险性. 2.掌握命令注入攻击攻击的原理与方法 3.掌握防范攻击的方法 实验原理 1.了解命令注入攻击攻击攻击带来的危险性. 2.掌握命令注入攻击攻击攻击的原理 ...
- 这款智能又高效的自助式BI工具,你应该了解一下
如今,企业的经营面临越来越激烈的竞争,如何将数据的价值发挥到最大化,成为众多企业急需解决的问题.如果部署数据分析平台还像以前那样要经历漫长实施过程的话,那么数据化运营将成为空谈.在市场需求的催化下,& ...
- C# Task和异步方法
本文主要参考: https://www.cnblogs.com/qtiger/p/13497807.html ThreadPool中有若干数量的线程.当有任务需要处理时,会从线程池中获取一个空闲的线程 ...
- 修改Ehcache缓存中取到的值,缓存中的值也被修改了
问题现象 我们从Ehcache中取出缓存的对象,之后将对象中的属性进行了修改使用.等再次从缓存中拿到对象后,发现对象的值变成了上一次调用修改后的对象了. 原因 Ehcache中缓存的是原对象的引用,所 ...
- Python:获取某一月的天数
import calendarcalendar.monthlen(2021,6)30calendar.monthrange(2021,6)(1, 30) calendar.monthrange( ye ...