《java入门第一季》之面向对象(接口收尾)
通过案例的形式,结束接口部分。
/*
猫狗案例,加入跳高的额外功能 分析:从具体到抽象
猫:
姓名,年龄
吃饭,睡觉
狗:
姓名,年龄
吃饭,睡觉 由于有共性功能,所以,我们抽取出一个父类:
动物:
姓名,年龄
吃饭();//吃的不一样,定义为抽象方法
睡觉(){} 猫:继承自动物
狗:继承自动物 跳高的额外功能是一个新的扩展功能,所以我们要定义一个接口
接口:
跳高 部分猫:实现跳高
部分狗:实现跳高
实现;
从抽象到具体,这个具体意思是实现后都是具体内容 使用:
使用具体类
*/
//定义跳高接口
interface Jumpping {
//跳高功能
public abstract void jump();
} //定义抽象类
abstract class Animal {
//姓名
private String name;
//年龄
private int age; public Animal() {} public Animal(String name,int age) {
this.name = name;
this.age = age;
} 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 abstract void eat(); //睡觉(){}
public void sleep() {
System.out.println("睡觉觉了");
}
} //具体猫类 class Cat extends Animal {//猫不具备跳高功能的猫
public Cat(){} public Cat(String name,int age) {
super(name,age);
} public void eat() {
System.out.println("猫吃鱼");
}
} //具体狗类,同猫
class Dog extends Animal {
public Dog(){} public Dog(String name,int age) {
super(name,age);
} public void eat() {
System.out.println("狗吃肉");
}
} //有跳高功能的猫,在继承一个类的同时实现接口
class JumpCat extends Cat implements Jumpping {
public JumpCat() {} public JumpCat(String name,int age) {
super(name,age);
} public void jump() {
System.out.println("跳高猫");
}
} //有跳高功能的狗,在继承一个类的同时实现接口
class JumpDog extends Dog implements Jumpping {
public JumpDog() {} public JumpDog(String name,int age) {
super(name,age);
}
public void jump() {//对接口中的抽象进行重写实现
System.out.println("跳高狗");
}
} class InterfaceTest {
public static void main(String[] args) {
//定义跳高猫并测试
Jumpping jum = new JumpCat();//多态的方式实现
JumpCat jc = new JumpCat();//自己类对象形式
jc.setName("哆啦A梦");
jc.setAge(3);
System.out.println(jc.getName()+"---"+jc.getAge());
jc.eat();
jc.sleep();
jc.jump();
jum.jump();//多态的方式,实现了特殊跳高功能
System.out.println("-----------------"); JumpCat jc2 = new JumpCat("加菲猫",2);
System.out.println(jc2.getName()+"---"+jc2.getAge());
jc2.eat();
jc2.sleep();
jc2.jump(); //定义跳高狗
Jumpping jum1 = new JumpDog();
JumpDog jd = new JumpDog();
jd.setAge(4);
jd.setName("叶晨");
System.out.println(jd.getName()+"-----"+jd.getAge());
jd.eat();
jd.sleep();
jd.jump();
jum1.jump();
System.out.println("-----------------"); JumpDog jd1 = new JumpDog("邱加泺",23);//用自己创建对象。
System.out.println(jd1.getAge()+"------"+jd1.getName());
jd1.eat();
jd1.sleep();
jd1.jump();
}
}
到目前为止,面向对象部分快要结束了。下一篇(http://blog.csdn.net/qq_32059827/article/details/51338014)将会通过一个小案例对面向对象所有内容以案例的形式进行总结。
《java入门第一季》之面向对象(接口收尾)的更多相关文章
- JAVA入门第一季(mooc-笔记)
笔记相关信息 /** * @subject <学习与创业>作业1 * @author 信管1142班 201411671210 赖俊杰 * @className <JAVA入门第一季 ...
- Java入门第一季——从此投身Java??
找工作告一段落. 最后的工作呢,和java紧密相关,也是阴差阳错,不过都是软件开发,都好了,不过以后侧重点肯定是在java这边,php有机会还是一直学下去的,那么美的说~ Java开发第一季 一.简 ...
- 《java入门第一季》之面向对象(谈谈接口)
软件中有接口,这里的接口与硬件中的接口还是有很大区别的. 这里介绍接口不考虑JDK8的新特性(JDK8开始接口里面可以有非抽象方法了,介绍JDK8新特性可能要到整个第一季写完吧!) 还是直接进入接口的 ...
- Java入门第一季
慕课网:http://www.imooc.com/learn/85 Java入门知识第一季 1.Java开发环境和IDE的使用: 2.变量和常量 3.常用的运算符 4.流程控制语句 5.数组:使用Ar ...
- 《java入门第一季》之Arrays类前传(排序案例以二分查找注意的问题)
根据排序算法,可以解决一些小案例.举例如下: /* * 把字符串中的字符进行排序. * 举例:"dacgebf" * 结果:"abcdefg" * * 分析: ...
- 《java入门第一季》之面向对象多态面试题(多态收尾)
/* 看程序写结果:先判断有没有问题,如果没有,写出结果 */ class A { public void show() { show2(); } public void show2() { Syst ...
- 《java入门第一季》之面向对象接口面试题
首先,(1)叙述接口的成员特点: /* 接口成员特点 成员变量:只能是常量,默认都是常量,并且是静态的. 默认修饰符:public static final 建议:自己手动给出类似:public st ...
- 《java入门第一季》之面向对象静态内部类和非静态内部类的区别
很感谢在内部类章节,"开心阳"先生给与的建议.使用静态内部类.这里就简单说一下静态内部类的使用. package com.devin; public class MyMain{ p ...
- 《java入门第一季》之面向对象(包概述)
由于eclipse等ide的强大功能,使得建包,导包用一些快捷键就能完成.这里对包的概念做稍微的叙述,了解即可: 分包后使得项目更加清晰,提高代码维护性. 包: A:其实就是文件夹 ...
随机推荐
- Docker镜像的实现原理
Docker 镜像是怎么实现增量的修改和维护的? 每个镜像都由很多层次构成,Docker 使用 Union FS 将这些不同的层结合到一个镜像中去. 通常 Union FS 有两个用途, 一方面可以实 ...
- ELK学习记录一 :初识ELK
ELK是elastic公司提供的一套完整的收集日志并分析展示的产品,分别表示Elasticsearch.Logstash和kibana. (官网截个图) 先来一段个人粗浅的认识: Elasticsea ...
- Linux: Check version info
一.查看Linux内核版本命令(两种方法): 1.cat /proc/version [root@localhost ~]# cat /proc/version Linux version 2.6.1 ...
- 自定义一个仿Spinner
两个布局文件: adpter_list.xml <?xml version="1.0" encoding="utf-8"?> <LinearL ...
- springMVC源码分析--AbstractUrlHandlerMapping(三)
上一篇博客springMVC源码分析--AbstractHandlerMapping(二)中我们介绍了AbstractHandlerMapping了,接下来我们介绍其子类AbstractUrlHand ...
- SpringMVC源码分析--文件上传
SpringMVC提供了文件上传的功能,接下来我们就简单了解一下SpringMVC文件上传的开发及大致过程. 首先需要在springMVC的配置文件中配置文件上传解析器 <bean id=&qu ...
- 软件测试之BUG分析定位概述(QA如何分析定位BUG)
你是否遇到这样的场景? QA发现问题后找到DEV说: 不好了,你的程序出问题了! DEV(追查半小时之后): 唉,是你们测试环境配置的问题 唉,是你们数据不一致 唉,是你们**程序版本不对 唉,是** ...
- 通过一个例子了解MapReduce
写MapReduce程序的步骤: 把问题转化为MapReduce模型: 设置运行参数: 写map类: 写reduce类: 例子:统计单词个数 Map的任务是将内容用" "分开,然后 ...
- javascript之内置函数
1.常规函数 (1)alert函数:显示一个警告对话框,包括一个OK按钮. (2)confirm函数:显示一个确认对话框,包括OK.Cancel按钮. (3)escape函数:将字符转换成Unicod ...
- Android简易实战教程--第二十四话《画画板》
今天完成一个画画板. 首先来个布局: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android ...