最近把java基础知识拿出来看看,看到abstract与interface的时候,觉得有点模糊,好像面试官也喜欢问这个问题。我在百度了查了好长时间,觉得讲算比较清楚的是那篇讲 Door,然后想要带个报警的AlarmDoor,地址http://www.cnblogs.com/gxinliug/archive/2011/04/27/2031246.html,其他地方也能找到这边篇文章,不知道是博主复制别人还是别人复制博主的。看了之后我还不是非常理解,我于是我就在stackoverflow上找了相关的帖子,其中感觉http://stackoverflow.com/questions/761194/interface-vs-abstract-class-general-oo 这个帖子里面的人回答得比较经典。

  • Pilot: abstract class
  • C-141 Pilot: concrete class
  • ISafety Officer: interface

我然后仔细想想, 这个abstract类,比如有个抽象的人类,有头发、眼睛、嘴巴等等这些属性,有吃饭、喝水、说话这些方法,然后一个人任何的子类都具有这些属性和方法,至于吃什么,喝什么和说什么就在于子类具体实现了。好了,现在某个人比如房祖名吧,有吸毒的技能(这里技能就当方法吧),成龙大哥是他的老子,但是他没有吸毒这个嗜好啊。成龙的儿子就长得像成龙,有说话,吃饭的技能,房祖名吸毒的这个技能估计是从张默那个接口实现的,哥俩好啊。他说:吸毒我爸没教我(不是你爸没有教你,所有的爸爸都没有教),就跟你学吧。想泡妞,但是成龙大哥又没有泡妞技能传授给他,怎么办?然后又实现了柯震东泡吧泡妞的接口,于是泡了很多美女。 有天晚上:房祖名沉思了下来回顾了从小大的历程:靠,我爸虽然是成龙,他就生了我,给我吃给我喝,其他啥技能都没教我,我吸毒泡妞还是跟张默和柯震东学的。

综上所说,成龙相当于一个抽象类吧,房祖名是一个子类,张默和柯震东就是两个接口吧。他以后想去澳门赌博,得实现周润发的接口啊。如果让成龙教他赌博,岂不是打断他的狗腿,这显然不现实啊。  所以房祖名就一个成龙父类,可以有像张默和柯震东的很多这样好基友的接口。

以上纯属鄙人愚见,请各位斧正!

代码就简单写下:

public abstract class Chenglong {

	public void eat() {

	}

	public void talk() {

	}
} public interface Zhangmo { public void xidu();
} public interface Kezhendong {
public void paoniu();
} public class Fangzuming extends Chenglong implements Zhangmo, Kezhendong {
@Override
public void eat(){ }
@Override
public void talk(){ } @Override
public void paoniu() {
// TODO Auto-generated method stub } @Override
public void xidu() { } }

  

abstract与interface之房祖名张默版的更多相关文章

  1. 转:Java中abstract和interface的区别

    转自:Java中abstract和interface的区别 abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java ...

  2. Java开发之abstract 和 interface的区别

    Java开发abstract 和 interface的区别 java开发里面经常会用到虚函数和接口,这两者的区别是什么呢? abstract: 子类里面只能继承一个父类 interface: 子类可以 ...

  3. AbStract 和Interface 方法是否能用Static修饰,为什么?

    Abstract 和Interface 方法是否能用Static修饰,为什么? interface中不能含有Static方法,属性,成员变量. Abstract中可以有Static方法,属性,成员变量 ...

  4. PHP namespace、abstract、interface、trait使用介绍

    小菜鸟一枚,一直搞不懂 namespace.abstract.interface.trait 这些关系,就抽出几天时间研究,做个总结,不足之处希望大家指正交流. namespace 命名空间 介绍:顾 ...

  5. Java标识符和关键字(static,final,abstract,interface)

    本文的主要内容如下   1.标识符合关键字 2.Java中的关键字 3.static关键 字 4.static方法 5.静态代码块 6.static修饰符综述 7.final关键字 8.final修饰 ...

  6. java中abstract和interface的區別(轉)

    (一)概述    在Java语言中, abstract class 和interface 是支持抽象类定义的两种机制.正是由于这两种机制的存 在,才赋予了Java强大的 面向对象能力.abstract ...

  7. C# abstract class Interface的介绍

    1.基本概念介绍 抽象类: 1.抽象方法只作声明,而不包含实现,可以看成是没有实现体的虚方法 2.抽象类可以但不是必须有抽象属性和抽象方法,但是一旦有了抽象方法,就一定要把这个类声明为抽象类 3.具体 ...

  8. Java Abstract Class & Interface

    一. 抽象类 1. 抽象类:包含了一个抽象方法的类就是抽象类 2. 抽象方法:声明而未被实现的方法,用关键字abstract声明 3. 抽象类被子类继承,子类(如果不是抽象类)必须重写(overrid ...

  9. abstract与interface的区别

    abstract的用法: //通过abstract 关键字修饰的类叫抽象类. abstract class Animal { String name; String color; abstract p ...

随机推荐

  1. 回首经典的SQL Server 2005

    原创文章转载请注明出处:@协思, http://zeeman.cnblogs.com SQL Server是我使用时间最长的数据库,算起来已经有10年了.上世纪90年代,微软在软件开发的所有领域高歌猛 ...

  2. 简单有效的kmp算法

    以前看过kmp算法,当时接触后总感觉好深奥啊,抱着数据结构的数啃了一中午,最终才大致看懂,后来提起kmp也只剩下“奥,它是做模式匹配的”这点干货.最近有空,翻出来算法导论看看,原来就是这么简单(先不说 ...

  3. 前端常用的WindowsCMD命令

    前面的话   在网上找了一些关于命令提示符CMD的资料,但是很多资料都是把所有的功能罗列出来,大部分都不会用到.所以,自己把常用的CMD命令总结如下,方便查阅 操作类 help 列出所有支持的指令及说 ...

  4. mac下安装及配置tomcat

    mac下的软件不像windows下的程序那样写注册表,对于tomcat的安装来说,在mac下是名符其实的绿色软件,具体操作如下: 1.到 apache官方主页 下载完整 tar.gz文件包.(没有专门 ...

  5. 一个技术汪的开源梦 —— 公共组件缓存之分布式缓存 Redis 实现篇

    Redis 安装 & 配置 本测试环境将在 CentOS 7 x64 上安装最新版本的 Redis. 1. 运行以下命令安装 Redis $ wget http://download.redi ...

  6. php批量删除

    php批量删除可以实现多条或者全部数据一起删除 新建php文件 显示数据库中内容: <table width="100%" border="1" cell ...

  7. C语言中如何判断文件是否存在

    方法一:access函数判断文件夹或者文件是否存在 函数原型: int access(const char *filename, int mode); 所属头文件:io.h filename:可以填写 ...

  8. ubuntu 下安装scrapy

    1.把Scrapy签名的GPG密钥添加到APT的钥匙环中: sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 6272 ...

  9. MySQL 优化之 ICP (index condition pushdown:索引条件下推)

    ICP技术是在MySQL5.6中引入的一种索引优化技术.它能减少在使用 二级索引 过滤where条件时的回表次数 和 减少MySQL server层和引擎层的交互次数.在索引组织表中,使用二级索引进行 ...

  10. phpexcel读取输出操作

    //读取 <?php header("Content-Type:text/html;charset=utf-8"); include 'Classes/PHPExcel.ph ...