抽象方法

java中abstract和interface的区别

女生的网名这么多〃 提交于 2019-11-28 14:54:38
1.相同点 A. 两者都是抽象类,都不能实例化。 B. interface实现类及abstrctclass的子类都必须要实现已经声明的抽象方法。 2. 不同点 A. interface需要实现,要用implements,而abstract class需要继承,要用extends。 B. 一个类可以实现多个interface,但一个类只能继承一个abstract class。 C. interface强调特定功能的实现,而abstractclass强调所属关系。 D. 尽管interface实现类及abstrct class的子类都必须要实现相应的抽象方法,但实现的形式不同。interface中的每一个方法都是抽象方法,都只是声明的(declaration,没有方法体),实现类必须要实现。而abstractclass的子类可以有选择地实现。 这个选择有两点含义: 一是Abastract class中并非所有的方法都是抽象的,只有那些冠有abstract的方法才是抽象的,子类必须实现。那些没有abstract的方法,在Abstrct class中必须定义方法体。 二是abstract class的子类在继承它时,对非抽象方法既可以直接继承,也可以覆盖;而对抽象方法,可以选择实现,也可以通过再次声明其方法为抽象的方式,无需实现,留给其子类来实现,但此类必须也声明为抽象类。既是抽象类

java 修饰符

拟墨画扇 提交于 2019-11-28 13:28:31
访问控制修饰符 Java中,可以使用访问控制符来保护对类、变量、方法和构造方法的访问。Java 支持 4 种不同的访问权限。 default (即默认,什么也不写): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。 private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类) public : 对所有类可见。使用对象:类、接口、变量、方法 protected : 对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类) 。 我们可以通过以下表来说明访问权限 修饰符 当前类 同一包内 子孙类(同一包) 子孙类(不同包) 其他包 public Y Y Y Y Y protected Y Y Y Y/N( 说明 ) N default Y Y Y N N private Y N N N N 默认访问修饰符-不使用任何关键字 使用默认访问修饰符声明的变量和方法,对同一个包内的类是可见的。接口里的变量都隐式声明为 public static final,而接口里的方法默认情况下访问权限为 public。 如下例所示,变量和方法的声明可以不使用任何修饰符。 String version = "1.5.1"; boolean processOrder() { return true; } 私有访问修饰符-private

设计模式简介及常用应用场景

有些话、适合烂在心里 提交于 2019-11-28 12:48:42
创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。 其实还有两类:并发型模式和线程池模式。 常用应用场景: 工厂模式 :IOC就是典型的工厂模式 代理模式 :AOP就是代理实现的 Facade模式 :shiro框架的核心 单例模式 Spring默认就是单例 不变模式 string 八大基本数据类型都是单例 Future 模式 异步调用。即请求时只拿到一个契约,约定以后可以获取这个东西 来源: https://www.cnblogs.com/duguangming/p/11407721.html

《JAVA与模式》之桥梁模式

无人久伴 提交于 2019-11-28 11:37:26
结构类 - 桥梁模式 一、定义(是什么)    将抽象和实现解耦,使得两者可以独立的变化       1) Abstraction 抽象化角色    定义出该角色的行为, 并引用一个实现化角色   2) Implementor 实现化角色     定义实现化角色的行为   3) RedefinedAbstraction 修正抽象化角色     修正抽象化角色的行为, 可以通过调用实现化角色的行为, 实现特定功能, 也可以额外添加附加逻辑.   4) ConreteImplementor 具体实现化角色     具体实现实现化角色的行为 二、为什么    抽象继承本应是稳定的,在单向变化(抽象继承)之外仍然有其他变化,则通过聚合的方式,外放变化,聚合变化。   设计模式的本质是封装变化,符合最核心的原则——开闭原则,即面对修改关闭,面对扩展开放。抽象继承侵入性很强, 一旦继承,子类便必须拥有该方法 。当该方法对子类不适用时,子类难以去掉。当有n层继承时,修改该方法风险会很大很大。继承的耦合性太强了,当比较明确不怎么变化时,才使用抽象继承封装变化。当极其不稳定时,根据开闭原则,在继承的方法里,再次细化封装变化,通过聚合的方式,外放变化,重新聚合实现本应继承的方法。如此一来,继承方法的变化风险会降低,稳定性提高,因为已经将变化风险分摊出去了。这就是桥梁模式。   桥梁模式的本质还是解耦

《Java 8 in Action》Chapter 3:Lambda表达式

帅比萌擦擦* 提交于 2019-11-28 10:48:21
1. Lambda简介 可以把Lambda表达式理解为简洁地表示可传递的匿名函数的一种方式:它没有名称,但它有参数列表、函数主体、返回类型,可能还有一个可以抛出的异常列表。 匿名——我们说匿名,是因为它不像普通的方法那样有一个明确的名称:写得少而想得多! 函数——我们说它是函数,是因为Lambda函数不像方法那样属于某个特定的类。但和方法一样,Lambda有参数列表、函数主体、返回类型,还可能有可以抛出的异常列表。 传递——Lambda表达式可以作为参数传递给方法或存储在变量中。 简洁——无需像匿名类那样写很多模板代码。 2. Lambda写法 (parameters) -> expression 或 (parameters) -> { statements; } eg:(Apple a1, Apple a2) -> a1.getWeight().compareTo(a2.getWeight()); Lambda表达式有三个部分: 参数列表——这里它采用了Comparator中compare方法的参数,两个Apple。 箭头——箭头->把参数列表与Lambda主体分隔开。 Lambda主体——比较两个Apple的重量。表达式就是Lambda的返回值了。 3. 函数式接口和函数描述符 函数式接口就是只定义一个抽象方法的接口。接口上标有 @FunctionalInterface

Lambda表达式与方法引用

ε祈祈猫儿з 提交于 2019-11-28 10:43:23
1 Lambda表达式 1.1 函数式编程思想概述 在数学中,函数就是有输入量、输出量的一套计算方案,也就是“拿数据做数据” 面向对象思想强调“必须通过对象的形式来做事情” 函数式思想则尽量忽略面向对象的复杂语法:“强调做什么,而不是以什么形式去做” 而我们要学的Lambda表达式就是函数式思想的体现 1.2 体验Lambda表达式 需求 :启动一个线程,在控制台输出一句话:多线程程序启动了 方式1: 定义一个类MyRunnable实现Runnable接口,重写run()方法 创建MyRunnable类的对象 创建Thread类的对象,把MyRunnable的对象作为构造参数传递 启动线程 // MyRunnable类实现了Runnable接口 public class MyThread implements Runnable{ @Override public void run() { System.out.println("多线程程序启动了"); } } // Test类 public class Test { public static void main(String[] args) { MyThread myThread = new MyThread(); Thread thread = new Thread(myThread,"Yuki"); thread.start(

Java面向对象(二)_封装、static、继承、多态、抽象、接口

非 Y 不嫁゛ 提交于 2019-11-28 07:23:57
备注:如有错误请给予联系 1. 面向对象的封装特性 在面向对象程式设计方法中,封装(英语: Encapsulation)是指一种将抽象性函式接口的实现细节部份包装、隐藏起来的方法。 封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。 要访问该类的代码和数据,必须通过严格的接口控制。 封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。 适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。 封装的优点 1. 良好的封装能够减少耦合。 2. 类内部的结构可以自由修改。 3. 可以对成员变量进行更精确的控制。 4. 隐藏信息,实现细节。 实现 Java封装的步骤 1. 修改属性的可见性来限制对属性的访问(一般限制为private),例如: 1 public class Person { 2 private String name; 3 private int age; 4 } 这段代码中,将 name 和 age 属性设置为私有的,只能本类才能访问, 其他类都访问不了,如此就对信息进行了隐藏。 2. 对每个值属性提供对外的公共方法访问,也就是创建一对赋取值方法,用于对私有属性的访问,例如: 1 public class Person{ 2 private String name; 3 private int age;

文件和流

╄→гoц情女王★ 提交于 2019-11-28 06:23:35
IO流:文件和流 回顾 Collection接口 add remove contains clear iterator |_____List (特点:有序的,可以重复) |___ArrayList (存储结构:数组) 查找遍历快,添加删除慢 |___LinkedList (链表)添加删除快,查找遍历慢 |___Vector 数组 (线程安全的) |___Stack 数组(栈)先进后出 | |_____Set(特点:无序的,不能重复) |_____HashSet 哈希表(jdk1.7数组加链表jdk1.8数组链表红黑树) 1 执行hashCode()来计算存储的位置 ,2 执行equals比较结果 |____LinkedHashSet 哈希表 可以保证顺序 |____TreeSet 自平衡红黑二叉树 1 元素要实现Comparable接口 ,2 定制比较器 Comparator Map(特点:存储键值对,键不能重复,一个键对应一个值,值可以重复,无序) |______ HashMap 哈希表 1 执行hashCode()来计算存储的位置 ,2 执行equals比较结果 |______ Hashtable 哈希表 不能存储null键和null值,线程安全的 jdk1.0----》Properties子类 |_______LinkedHashMap 哈希表 可以保证顺序 |______

[ 转载 ] Android设计模式详解

非 Y 不嫁゛ 提交于 2019-11-28 05:29:31
从Android再来认识23种设计模式 ReadyShow 关注 0.2 2018.01.06 23:18* 字数 3855 阅读 2584 评论 0 喜欢 20 概况来看本文章的内容 创建型:5个 单例模式 Builder 原型模式 工厂方法 抽象工厂 行为型: 11个 策略模式 状态模式 观察者模式 中介者模式 访问者模式 迭代器模式 模板方法 备忘录模式 命令模式 解释器模式 职责链模式 结构型:7个 组合模式 代理模式 装饰模式 外观模式 享元模式 桥接模式 适配器模式 关于面向对象 面向对象的六大原则 谈到设计模式,不得不说说面向对象的六大原则 1. 单一原则 单一原则通俗的讲就是一个类只表达一个概念、一个方法只做一件事情。将一组相关性很高的函数、数据封装到一个类中。换句话说,一个类应该有职责单一。 2. 开闭原则 开闭原则就是一个类对于扩展是开发的,但是对于修改是封闭的。这也是六大原则中最难的,通常开闭都是短暂的美好,但在业务升级与拓展的状态下,原理的开闭是无法满足。即使是这样,也要尽可能的扩展而不是修改。 3. 里氏替换原则 所有引用基类的地方必须能透明地使用其子类对象 。看着定义很是抽象,但是通俗的理解就是由子类实例化的父类引用,在使用这个引用时,感觉就像是使用了父类一样。一个简单的例子: public class T{ private class A{...}

面向对象设计原则

[亡魂溺海] 提交于 2019-11-28 05:28:57
在软件开发中,为了提高软件系统的可维护性和可复用性,增加软件的可扩展性和灵活性,程序员经理根据7条原则来开发程序,从而提高软件开发效率、节约软件开发成本和维护成本。 1. 开闭原则(Open Closed Principle, OCP) 软件实体应该对扩展开放,对修改关闭。 这里的软件实体包括以下几个部分: 1) 项目中划分出的模块 2) 类与接口 3) 方法 开闭原则的含义是:当应用的需求改变时,在不修改软件实体的源代码的前提下,可以扩展模块的功能,使其满足新的需求。 1.1 作用 开闭原则是面向对象程序设计的终极目标,它使软件实体拥有一定的适应性和了灵活性的同事具备稳定性和延续性。具体来说,其作用如下: (1) 对软件测试的影响 软件遵守开闭原则的话,软件测试时只需要对扩展的代码进行测试就可以了,因为原有的测试代码仍然能够正常原型。 (2) 可以提高代码的可复用性 粒度越小,被复用的可能性就约到;在面对对象的程序设计中,更具原子核抽象编程可以提高代码的可服用性。 (3) 可以提高软件的可维护性 遵守开闭原则的软件,其稳定性高和延续性强,从而抑郁扩展和维护。 1.2 实现方法 可以通过“抽象约束、封装变化”来实现开闭原则,即通过接口或者抽象类为软件实体定义一个相对稳定的抽象层,而将相同的可变因素封装在相同的具体实现类中。 因为抽象灵活性好,实用性广,只要抽象的合理