最近把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. 奇异值分解(SVD)原理与在降维中的应用

    奇异值分解(Singular Value Decomposition,以下简称SVD)是在机器学习领域广泛应用的算法,它不光可以用于降维算法中的特征分解,还可以用于推荐系统,以及自然语言处理等领域.是 ...

  2. 玩转spring boot——MVC应用

    如何快速搭建一个MCV程序? 参照spring官方例子:https://spring.io/guides/gs/serving-web-content/ 一.spring mvc结合thymeleaf ...

  3. Oracle 数据库知识汇总篇

    Oracle 数据库知识汇总篇(更新中..) 1.安装部署篇 2.管理维护篇 3.数据迁移篇 4.故障处理篇 5.性能调优篇 6.SQL PL/SQL篇 7.考试认证篇 8.原理体系篇 9.架构设计篇 ...

  4. Python爬虫小白入门(四)PhatomJS+Selenium第一篇

    一.前言 在上一篇博文中,我们的爬虫面临着一个问题,在爬取Unsplash网站的时候,由于网站是下拉刷新,并没有分页.所以不能够通过页码获取页面的url来分别发送网络请求.我也尝试了其他方式,比如下拉 ...

  5. Flexible 弹性盒子模型之CSS flex-flow

    实例 让弹性盒的元素以相反的顺序显示,且在必要的时候进行拆行: display:flex; flex-flow:row-reverse wrap;   效果预览 浏览器支持 表格中的数字表示支持该属性 ...

  6. Android Weekly Notes Issue #235

    Android Weekly Issue #235 December 11th, 2016 Android Weekly Issue #235 本期内容包括: 开发一个自定义View并发布为开源库的完 ...

  7. 虚拟机VMware12.05下安装Ubuntu16.04几个关键地方

    在踩了自己按照网上的教程安装Ubuntu之后,仍然踩了不少坑,鼓捣了一段时间,才达到自己想要的界面.   下面就来说说,大家可能也会遇到的情况:   1.安装ISO镜像时候,路径直接选择 你从Ubun ...

  8. FineReport如何用JDBC连接阿里云ADS数据库

    在使用FineReport连接阿里云的ADS(AnalyticDB)数据库,很多时候在测试连接时就失败了.此时,该如何连接ADS数据库呢? 我们只需要手动将连接ads数据库需要使用到的jar放置到%F ...

  9. 数据分布转换:非正态 -> 正态

    来源:丁香园论坛:SPSS上的把非正态分布数据转换为正态分布数据 一楼 可以应用变量变换的方法,将不服从正态分布的资料转化为非正态分布或近似正态分布.常用的变量变换方法有对数变换.平方根变换.倒数变换 ...

  10. Dubbo 备注

    Dubbo是阿里开源的一款服务治理中间件,主要包含如下节点: Provider: 暴露服务的服务提供方. Consumer: 调用远程服务的服务消费方. Registry: 服务注册与发现的注册中心. ...