Java interface和abstract小记】的更多相关文章

一.abstract 用abstract修饰的类叫做抽象类,用abstract修饰的方法叫抽象方法. 含有抽象方法的类必须被声明为抽象类,抽象类必须被继承,抽象方法必须被重写. 抽象类不能被实例化. 抽象方法只需声明而不需要实现. 二.interface 接口是抽象方法和常量值的定义的集合 从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现. 接口中的方法默认都是public abstract修饰的,全局常量默认是用public static fian…
Java:HashTable类小记 对 Java 中的 HashTable类,做一个微不足道的小小小小记 概述 public class Hashtable<K,V> extends Dictionary<K,V> implements Map<K,V>, Cloneable, java.io.Serializable { // ... } 需要说明的是:HashTable 和 HashMap 的实现原理基本一样,差别无非是: HashTable 不允许 key 和 v…
Java:Set接口小记 对 Java 中的 Set接口 与 其实现类,做一个微不足道的小小小小记 概述 public interface Set<E> extends Collection<E> { // ... } Set 接口继承了 Collection 接口,Set集合中不能包含重复的元素,每个元素必须是唯一的,你只要将元素加入 Set 中,重复的元素会自动移除. 对于 Set 的个人理解: 使用上:就是不能带有重复元素的 List: 本质上:只用了 key 的 Map,一…
Java:ArrayList类小记 对 Java 中的 ArrayList类,做一个微不足道的小小小小记 概述 java.util.ArrayList 是大小可变的数组的实现,存储在内的数据称为元素.此类提供一些方法来操作内部存储的元素. ArrayList 中可不断添加元素,其大小也自动增长. ArrayList 是一种变长的集合类,基于定长数组实现. ArrayList 允许空值和重复元素,当往 ArrayList 中添加的元素数量大于其底层数组容量时,其会通过扩容机制重新生成一个更大的数组…
Java:修饰符小记 对 Java 中的 修饰符,做一个微不足道的小小小小记 Java 语言提供了很多修饰符,大概分为两类: 访问权限修饰符 非访问权限修饰符 访问权限修饰符 修饰符 说明 public 共有访问.对所有的类都可见 protected 保护型访问.对同一个包可见,对不同的包的子类可见 default 默认访问权限.只对同一个包可见,注意:对不同的包的子类不可见 private 私有访问.只对同一个类可见,其余都不见 非访问权限修饰符 修饰符 说明 static 用来创建类方法和类…
Java:动态代理小记 对 Java 中的 动态代理,做一个微不足道的小小小小记 概述 动态代理:当想要给实现了某个接口的类中的方法,加一些额外的处理.比如说加日志,加事务等.可以给这个类创建一个代理,故名思议就是创建一个新的类,这个类不仅包含原来类方法的功能,而且还在原来的基础上添加了额外处理的新功能.这个代理类并不是定义好的,是动态生成的.具有解耦意义,灵活,扩展性强. 动态代理的应用:Spring 的 AOP .加事务.加权限.加日志. 实现 JDK原生动态代理:动态代理类和被代理类必须继…
在面向对象中,Interface和Abstract class是实现抽象类定义的两种机制. 1.声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况. 2.接口是一种约束形式,其中只包括成员定义,不包含成员实现的内容. 相同点  A. 两者都是抽象类,都不能实例化.  B. interface实现类及abstrct class的子类都必须要实现已经声明的抽象方法. 不同点 A. inter…
[interface vs abstract] 1.interface中的方法不能用public.abstract修饰,interface中的方法只包括signature. 2.一个类只能继承一个abstract class,却可以实现多个interface. 3.abstract class表示的是"is a"关系,描述一类对象的特性. 4.interface 表示的是能力的关系“capable”,描述一类对象是否拥有某种能力(是否继承哪个类). 5.实现interface方法时,不…
C#中??和?分别是什么意思? 在C#中??和?分别是什么意思? 1. 可空类型修饰符(?):引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空.例如:string str=null; 是正确的,int i=null; 编译器就会报错.为了使值类型也可为空,就可以使用可空类型,即用可空类型修饰符"?"来表示,表现形式为"T?"例如:int? 表示可空的整形,DateTime? 表示可为空的时间.T? 其实是System.Nullable(泛型结构)的…
Java Interface 是常量存放的最佳地点吗?(转帖学习,非原创) 由于java interface中声明的字段在编译时会自动加上static final的修饰符,即声明为常量.因而interface通常是存放常量的最佳地点.然而在java的实际应用时却会产生一些问题. 问题的起因有两个,第一,是我们所使用的常量并不是一成不变的,而是相对于变量不能赋值改变.例如我们在一个工程初期定义常量∏=3.14,而由于计算精度的提高我们可能会重新定义∏=3.14159,此时整个项目对此常量的引用都应…
转:Java 文件句柄泄露问题解决小记 维护 WebIDE 免不了要管理很多的文件, 自从我们线上系统增加了资源回收功能,便一直受一个问题困扰:后台线程解绑目录时偶尔报错,看症状因为是某些文件被占用了,目录不能解绑.但是由于系统中很多地方都有打开文件,各种包也存在复杂的的引用关系,在搜查几遍代码后并没有发现什么明显的异常. 由于这个功能清理的是既没在线又没有在离线列表中的磁盘绑定目录,那么很可能是文件句柄泄露了,还有一种原因可能是 JVM 延迟释放文件句柄,不过实际是什么原因还需要用数据说话.…
Java:ConcurrentHashMap类小记-3(JDK8) 结构说明 // 所有数据都存在table中, 只有当第一次插入时才会被加载,扩容时总是以2的倍数进行 transient volatile Node<K,V>[] table; // 在扩容时存放变量,结束后置为null private transient volatile Node<K,V>[] nextTable; // 以volatile修饰的sizeCtl用于数组初始化与扩容控制,☆后续说明☆ privat…
Java:ConcurrentHashMap类小记-2(JDK7) 对 Java 中的 ConcurrentHashMap类,做一个微不足道的小小小小记,分三篇博客: Java:ConcurrentHashMap类小记-1(概述) Java:ConcurrentHashMap类小记-2(JDK7) Java:ConcurrentHashMap类小记-3(JDK8) 结构说明 构造函数 无参构造 // 空参构造 public ConcurrentHashMap() { // 调用本类的带参构造,都…
Java:ConcurrentHashMap类小记-1(概述) 对 Java 中的 ConcurrentHashMap类,做一个微不足道的小小小小记,分三篇博客: Java:ConcurrentHashMap类小记-1(概述) Java:ConcurrentHashMap类小记-2(JDK7) Java:ConcurrentHashMap类小记-3(JDK8) 概述 ConcurrentHashMap 是 Java 并发包中提供的一个线程安全且高效的 HashMap 实现,其在并发编程的场景中使…
Java:HashMap类小记 对 Java 中的 HashMap类,做一个微不足道的小小小小记 概述 HashMap:存储数据采用的哈希表结构,元素的存取顺序不能保证一致.由于要保证键的唯一.不重复,需要重写键的hashCode()方法.equals()方法. Map 接口中定义了很多方法,常用的如下: public V put(K key, V value) : 把指定的键与指定的值添加到Map集合中. public V remove(Object key) : 把指定的键所对应的键值对元素…
Java:TreeMap类小记 对 Java 中的 TreeMap类,做一个微不足道的小小小小记 概述 前言:之前已经小小分析了一波 HashMap类.HashTable类.ConcurrentHashMap类.LinkedHashMap类,现在再小小分析一下TreeMap类 public class TreeMap<K,V> extends AbstractMap<K,V> implements NavigableMap<K,V>, Cloneable, java.i…
Java:LinkedHashMap类小记 对 Java 中的 LinkedHashMap类,做一个微不足道的小小小小记 概述 public class LinkedHashMap<K,V> extends HashMap<K,V> implements Map<K,V>{ // ... } LinkedHashMap 继承于 HashMap,而由于 HashMap 是无序的,而当我们需要有序的存储 key-value 键值对时,就可以采用 LinkedHashMap.…
Java:LinkedList类小记 对 Java 中的 LinkedList类,做一个微不足道的小小小小记 概述 java.util.LinkedList 集合数据存储的结构是循环双向链表结构.方便元素添加.删除的集合. 循环双向链表: 链表中任意一个存储单元都可以通过向前或者向后寻址的方式获取到其前一个存储单元和其后一个存储单元 链表的尾节点的后一个节点是链表的头结点,链表的头结点的前一个节点是链表的尾节点 可以画出如下示意图: 就是这样的结构,是的链表可以作为队列/双端队列使用,在刷题的时…
Java:Object对象小记 对 Java 中的 Object 对象,做一个微不足道的小小小小记 Object 的常用方法有哪些 clone() 方法:用于创建并返回当前对象的一份拷贝: 在Java:创建对象小记这里做了个小结 getClass() 方法:用于返回当前运行时对象的 Class: toString() 方法:返回对象的字符串表示形式: finalize() 方法:实例被垃圾回收器回收时触发的方法: equals() 方法:用于比较两个对象的内存地址是否相等,一般需要重写: has…
Java:static关键字小记 对 Java 中的 static 关键字,做一个微不足道的小小小小记 static 修饰变量 静态变量:是被 static 修饰的变量,也称为类变量,它属于类,因此不管创建多少个对象,静态变量在内存中有且仅有一个拷贝:静态变量可以实现让多个对象共享内存:可以直接通过 类名.静态变量名 来访问它. 静态的注意事项: 静态方法只能访问静态成员(包括静态成员变量和静态成员方法),不能访问非静态成员或方法:非静态方法可以访问静态也可以访问非静态方法或成员. 静态方法中不…
Java:String对象小记 对 Java 中的 String 对象,做一个微不足道的小小小小记 字节和字符的区别 字节 byte: 一个字节包含8个位(bit),因此byte的取值范围为-128~127: 字节是存储容量的基本单位: 字符 char: 字符是数字.字母.汉字以及其他语言的各种符号: Java 采用 unicode 来表示字符,Java 中的一个 char 是2个字节,一个中文或英文字符的 unicode 编码都占2个字节: 在 GB2312 编码或 GBK 编码中,一个英文字…
Java开发abstract 和 interface的区别 java开发里面经常会用到虚函数和接口,这两者的区别是什么呢? abstract: 子类里面只能继承一个父类 interface: 子类可以实现多个接口 那什么时候用abstract,什么时候用interface呢? 当某个子类和父类是 is a关系时,比如一个亚洲人是一个人,那么一个亚洲人的子类可以继承一个人的父类. 当子类和父类是like a关系时,比如一个美洲超人像一个超人,超人的能力不是每个人都有的,所以不是所有人的属性,我们不…
一.抽象类:abstract 抽象类就是为了继承而存在的,如果你定义了一个抽象类,却不去继承它,那么等于白白创建了这个抽象类,因为你不能用它来做任何事情.对于一个父类,如果它的某个方法在父类中实现出来没有任何意义,必须根据子类的实际需求来进行不同的实现,那么就可以将这个方法声明为abstract方法,此时这个类也就成为abstract类了. 格式如下: 包含抽象方法的类称为抽象类,但并不意味着抽象类中只能有抽象方法,它和普通类一样,同样可以拥有成员变量和普通的成员方法.注意,抽象类和普通类的主要…
这篇文章主要是自己在使用java的过程中对自己一些之前常困惑的问题的一些总结. 正如题目所言,这篇博客主要是讨论java中的接口与抽象类的区别,有自己的使用心得,以及自己平时在使用的过程中遇到的问题及解决方案. 1, 定义上的区别: 其实说别的抽象意义都不会让人明白,只有java语言级别上的区别才能根本上区别两者:java中"everything is an object", 所以接口理论上讲也是一种对象,或者叫类. 它的定义是: 以关键字interface取代class定义的类就是接…
interface: interface类似于class,但是只包含函数(只规定参数.函数名.返回类型,不规定函数体).目的是用来建立类和类之间的一种“协议”.一个类可以实现多种接口,来模拟多重继承. abstract class: 可以定义函数体,也可以不定义.抽象类中的方法必须是abstract,只要存在一个abtract方法,那么类也必须是abstract.类可以实现多个接口,但是只能继承单一的类. 那么到底应该使用一个接口还是一个抽象类呢? 使用接口,我们可以同时获得抽象类以及接口的好处…
参考:https://zhidao.baidu.com/question/424485344260391052.html 这2种有什么区别,根据实际项目经验 帮我解答下 谢谢啊~~~~~~~~~问题补充: 你们都不好好看标题吗.......是抽象接口 而不是抽象类…
)抽象类是对类抽象,是面向整个类的自下而上的设计理念,一般是先有各种子类,再有把这些有关系的子类加以抽象为父类的需求.而接口是对行为的抽象,是面向行为的自上而下的设计理念,接口根本就不需要知道子类的存在,只需要定义一个规则即可. 2. 结束语   通过以上从实现程度.一继承多接口.内部成员结构.以及设计理念四个角度对接口和抽象类的区别进行理解之后,便可以在选择使用接口或者抽象类时做出更加合理的设计.转载请注明出处:http://blog.csdn.net/seu_calvin/article/d…
一,抽象类:abstract 1,只要有一个或一个以上抽象方法的类,必须用abstract声明为抽象类; 2,抽象类中可以有具体的实现方法; 3,抽象类中可以没有抽象方法; 4,抽象类中的抽象方法必须被它的子类实现,如果子类没有实现,则该子类继续为抽象类 5,抽象类不能被实例化,但可以由抽象父类指向的子类实例来调用抽象父类中的具体实现方法;通常作为一种默认行为; 6,要使用抽象类中的方法,必须有一个子类继承于这个抽象类,并实现抽象类中的抽象方法,通过子类的实例去调用; 二,接口:interfac…
本文引用资源申明: http://blog.csdn.net/xw13106209/article/details/6923556 http://www.cnblogs.com/dolphin0520/p/3811437.html http://www.tutorialspoint.com/java/java_abstraction.htm 1. 抽象类 关键词:abstract 定义:含有抽象方法的类,也可以有具体方法. 抽象方法:只有方法的声明,没有body. 用:结尾,没有{}.抽象类的抽…
抽象类(abstract) 含有abstract修饰符的class即为抽象类,abstract 类不能创建的实例对象. 含有abstract方法的类必须定义为abstract class,abstract class类中的方法不必是抽象的. abstract class类中定义抽象方法必须在具体(Concrete)子类中实现,所以,不能有抽象构造方法或抽象静态方法. 如果的子类没有实现抽象父类中的所有抽象方法,那么子类也必须定义为abstract类型. 接口(interface) interfa…