最近把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. 使用ServiceStack构建Web服务

    提到构建WebService服务,大家肯定第一个想到的是使用WCF,因为简单快捷嘛.首先要说明的是,本人对WCF不太了解,但是想快速建立一个WebService,于是看到了MSDN上的这一篇文章 Bu ...

  2. 关于如何提高Web服务端并发效率的异步编程技术

    最近我研究技术的一个重点是java的多线程开发,在我早期学习java的时候,很多书上把java的多线程开发标榜为简单易用,这个简单易用是以C语言作为参照的,不过我也没有使用过C语言开发过多线程,我只知 ...

  3. Socket聊天程序——服务端

    写在前面: 昨天在博客记录自己抽空写的一个Socket聊天程序的初始设计,那是这个程序的整体设计,为了完整性,今天把服务端的设计细化记录一下,首页贴出Socket聊天程序的服务端大体设计图,如下图: ...

  4. ajax

    常见的HTTP状态码状态码:200 请求成功.一般用于GET和POST方法 OK301 资源移动.所请求资源移动到新的URL,浏览器自动跳转到新的URL Moved Permanently304 未修 ...

  5. Phoenix综述(史上最全Phoenix中文文档)

    个人主页:http://www.linbingdong.com 简书地址:http://www.jianshu.com/users/6cb45a00b49c/latest_articles 网上关于P ...

  6. 【开源】.Net 分布式服务中心

    分布式服务中心 开源地址: http://git.oschina.net/chejiangyi/Dyd.BaseService.ServiceCenter 当垂直应用越来越多,应用之间交互不可避免,将 ...

  7. go语言:多个[]byte数组合并成一个[]byte

    场景:在开发中,要将多个[]byte数组合并成一个[]byte,初步实现思路如下: 1.获取多个[]byte长度 2.构造一个二维码数组 3.循环将[]byte拷贝到二维数组中 package gst ...

  8. 关于Genymotion下载比较慢的解决办法

    Genymotion号称Android模拟器中运行最快的,但是服务器在国外,Android镜像下载起来那个速度就不想说了. Add new device后下载速度太慢了,容易失败 先登录,然后add, ...

  9. MySQL:常见使用问题

    内容 1.Linux 上安装 MySQL 2.单机上安装多实例 3.不知root密码情况下,修改root密码 1.Linux 上安装MySQL 安装步骤: 1)解压 tar.gz文件 -linux-g ...

  10. .NET跨平台之旅:数据库连接字符串写法引发的问题

    最近在一个ASP.NET Core站点中遇到一个奇怪问题.当用dotnet run命令启动站点后,开始的一段时间请求执行速度超慢,有时要超过20秒,有时甚至超过1分钟,日志中会记录这样的错误: Sys ...