抽象类和接口

什么是接口:接口就是一些方法特征的集合------接口是对抽象的抽象。

什么是抽象类:抽象类对某具体类型的部分实现------抽象类是对具体的抽象。

方法特征包括:方法的名字、参数的数目、参数的类型。不包括:返回类型、参数名字、和抛出的异常。

接口是类型转换的前提、是动态调用的保证。实现某一接口就完成了类型的转换(多重继承);动态调用只关心类型,不关心具体类。

--------------------------------------------------------------------------------------------------------------------------------------

java接口(抽象类)用来声明一个新的类型。

Java设计师应当主要使用接口和抽象类将软件单位与内部和外部耦合起来。

换言之,应当使用java接口和抽象类而不是具体类进行变量的类型声明、参数的类型声明、方法的返回类型声明、以及数据类型的转换等。

当然一个更好的做法是仅仅使用接口,而不是抽象类来做上面这些事情。

在理想的情况下,一个具体类应当只实现接口和抽象类中声明的方法,而不应当给出多余的方法!

接口和抽象类一般作为一个类型等级结构的起点。

接口比抽象类更为抽象所以优先使用接口声明抽象类型!

--------------------------------------------------------------------------------------------------------------------------------------

抽象类和接口

抽象类仅提供一个类的部分实现。抽象类可以有实例变量、以及一个或多个构造函数。抽象类可以同时又抽象方法和具体方法。

一个抽象类不会有实例,它的构造函数不能被客户端用来创建实例。一个抽象类的构造函数可以被其子类调用,从而使一个抽象类的所有子类可以有一些共同的实现,而不同的子类可以在此基础上有不同的实现。

接口比抽象类更为抽象所以有线使用接口声明抽象类!

抽象类是用来继承的。(具体类不是用来继承的,“只要有可能不要从具体类继承---scott meryes”)。

抽象类设计原则:

1,   抽象类应当拥有尽可能多的代码!(公用方法)。代码集中于抽象的方向。

2,   抽象类应当拥有尽可能少的数据!(公共属性)。数据集中于具体的方向。

继承复用的使用条件------- Peter Coad条件

1.        子类是超类的一个特殊种类而不是超类的一个角色!正确区分“Has-A”“Is-A”的关系。

2.        子类之间不应发生替换!?

3.        子类具有扩展超类的责任,而不是置换(Override)掉或注销(Nullify)掉的责任。

4.        只有在分类学角度上有意义时才可以使用继承,不要从具体类继承。

接口和抽象类的区别:

1.          抽象类可以提供某些方法的实现。如果向抽象类中加入一个新的具体的方法,那么所有的子类一下子就得到了这个方法。接口做不到这一点!(这也许是抽象类的唯一优点)。

2.因java的单根结构限制,只类只能实现一个抽象类类型,而接口类型这无此限制。这使抽象类作为类型定义工具的效能落后于接口。接口是定义混合类型(实现多从继承)的理想工具。

2。 从代码重构的角度上讲,将一个具体类从构成一个接口类型实现起来更容易。

《java与模式》笔记-----抽象类和接口相关推荐

  1. java提高篇之抽象类与接口

    转载自 java提高篇之抽象类与接口 接口和内部类为我们提供了一种将接口与实现分离的更加结构化的方法. 抽象类与接口是java语言中对抽象概念进行定义的两种机制,正是由于他们的存在才赋予java强大的 ...

  2. Java学习系列之抽象类和接口的区别和联系

    导读 本文首先分别介绍抽象类和接口的基础概念.特征和应用场景,然后介绍其区别和联系. 1 抽象类 1.1 定义抽象类 在Java中被abstract关键字修饰的类称为抽象类,被abstract关键字修 ...

  3. JAVA 继承基本类、抽象类、接口

    Java是一个面向对象的语言,java面向对象一般有三大特征:封装.继承.多态. 封装:就是把一些属性和方法封装到一个类里. 继承:就如子类继承父类的一些属性和方法. 多态:就如一个父类有多个不同特色 ...

  4. Java基础篇:抽象类与接口

    1.抽象类和接口的定义: (1)抽象类主要用来抽取子类的通用特性,作为子类的模板,它不能被实例化,只能被用作为子类的超类. (2)接口是抽象方法的集合,声明了一系列的方法操作,自身并不能做任何事情.如 ...

  5. Java 的抽象特性:抽象类与接口深度解析

    要点: 抽象类 接口 抽象类与接口的差别 一. 抽象 对于面向对象编程来说,抽象是它的四大特征之中的一个. 在Java中,能够通过两种形式来体现OOP的抽象:接口和抽象类. 接口和抽象类为我们提供了一 ...

  6. 【JAVA基础篇】抽象类和接口的区别

    抽象类和接口是定义抽象概念的两种方式,正是由于抽象类和接口,才赋予了Java强大的面向对象的能力.在讨论他们的不同点之前,我们先来了解抽象类和接口. 抽象类 在面向对象的领域一切事物都是对象.对象都是 ...

  7. java实体类实现抽象类_java接口、抽象类、实体类关系介绍

    接口:接口是一个引用类型,与类相似,不过在接口中只能包含常量,方法名和嵌套类型.没有构造器,所以不能被实例化只能被类所实现或者被另外的接口所继承.在接口中声明的方法没有方法体. 抽象类:将类层次中共有 ...

  8. 【java进阶02:抽象类和接口】类与类之间的关系 抽象类与接口的区别

    目录 抽象类 接口 抽象类 什么是抽象类 /*类---->对象 :实例化 对象---->类 :抽象抽象类:1.什么是抽象类?类和类之间具有共同特征,将这些共同特征提取出来,形成的就是抽象类 ...

  9. Java基础---多态、抽象类、接口

    2015-4-4 一.多态 1.定义:某一个事物,在不同时刻表现出来的不同状态. 2.多态的前提与体现: (1)要有继承关系: (2)要进行方法的重写: (3)要父类引用指向子类对象. 3.成员访问特 ...

最新文章

  1. JAVA SE学习day16:reflect
  2. 20155222 2016-2017-2 《Java程序设计》第10周学习总结
  3. Cisco访问控制列表配置指南
  4. Wiki系统分析比较
  5. 注解@Slf4j的使用
  6. 《剑指offer》-- 二叉树的下一个结点、对称二叉树、按之字性顺序打印二叉树、把二叉树打印成多行
  7. 崩溃bug日志总结2
  8. Git rebase命令实战
  9. mysql 1143_ERROR 1143 (42000): SELECT command denied to user
  10. java虚拟机(八)--java性能监控与故障处理工具
  11. 关于 路标设置 的问题
  12. chatgpt的150个指令大全
  13. 计算机技术在现代地球科学中的重要性,浅谈GIS技术在地球科学中的应用.doc
  14. python自动化交易_用Python寫自動交易程式的入門平台: Quantopian
  15. Some projects cannot be imported because their project description file is corrupted
  16. 美光科技:非挥发性存储器及快闪存储器才是归宿
  17. win 32 APP 项目简单创建窗体
  18. 个人信息安全:民法总则只是第一步
  19. css非常简单的打码效果
  20. 2010.09.28_ximo_纠正下VMP脱壳中的修复DLL的错误

热门文章

  1. STM32触摸屏按下检测多次解决方案
  2. 基于babylon.js的3D网页游戏从零教程
  3. vim中删除当前行后面所有的行
  4. 【python】hasattr()、getattr()、setattr() 函数使用详解
  5. 推荐一款国产ECG心电芯片
  6. vs2015安装Qt插件问题
  7. 编译原理 —— 逆波兰式
  8. CentOS安装配置Maven
  9. Word输入一个字,后面就会消失一个字,该怎么办
  10. 阿里云服务器是干什么用的?