2-1 抽象类、接口、多态、集合
1.抽象类1.1 抽象类的定义
使用abstract修饰的类就是抽象类,示例如下:
public abstract class Test{//抽象类定义 public abstract void doItByHand();//抽象方法定义}
1.2 抽象类的作用
通过继承它实现多态,后期实现具体方法,可以为将来要实现的东西做好接口,实现重用性;抽象类是接口和实现类之间的桥梁。
1.3 抽象方法只给出方法定义而不具体实现的方法被称为抽象方法。
2. 接口2.1 接口的定义接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现。
定义接口的语法格式如下:
访问修饰符 修饰符 interface 接口名称{
抽象属性集
抽象方法集
}
此接口强行对实现它的每个类的对象进行整体排序。此排序被称为该类的自然排序 ,类的 compareTo 方法被称为它的自然比较方法 。实现此接口的对象列表(和数组)可以通过 Collections.sort (和 Arrays.sort )进行自动排序。实现此接口的对象可以用作有序映射表中的键或有序集合中的元素,无需指定比较器。
实现Comparable接口需要实现int compareTo(T o)方法,此方法比较此对象与指定对象的顺序。如果该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数。
强烈推荐 (x.compareTo(y)==0) == (x.equals(y)) 这种做法,但不是严格要求这样做。
Comparator位于包java.util下,而Comparable位于包java.lang下,Comparable接口将比较代码嵌入自身类中,而后者在一个独立的类中实现比较。 如果类的设计师没有考虑到Compare的问题而没有实现Comparable接口,可以通过 Comparator来实现比较算法进行排序,并且为了使用不同的排序标准做准备,比如:升序、降序。
2.5 接口与抽象类的关系与区别关系:接口是一种特殊的抽象类,它们的渊源颇深,有很大的相似之处。
区别:
抽象类在Java语言中表示的是一种继承关系,一个类只能使用一次继承关系。但是,一个类却可以实现多个interface。在abstract class 中可以有自己的数据成员,也可以有非abstarct的成员方法,而在interface中,只能够有静态的不能被修改的数据成员(也就是必须是static final的,不过在 interface中一般不定义数据成员),所有的成员方法都是abstract的。abstract class和interface所反映出的设计理念不同。其实abstract class表示的是"is-a"关系,interface表示的是"like-a"关系。实现抽象类和接口的类必须实现其中的所有方法。抽象类中可以有非抽象方法。接口中则不能有实现方法。 接口中定义的变量默认是public static final 型,且必须给其初值,所以实现类中不能重新定义,也不能改变其值。当然,变量定义也可以是friendly。抽象类中的变量默认是 friendly 型,其值可以在子类中重新定义,也可以重新赋值。接口中的方法默认都是 public abstract 类型的。3. 多态性的定义同一行为的多种不同表达,或者同一行为的多种不同实现就叫做多态。
4. 方法重载在同一个Java 类中(包含父类),如果出现了方法名称相同,而参数列表不同的情况就叫做重载。
方法的重载的规则:
(1):方法名称必须相同
(2):参数列表必须不同(个数不同,或类型不同,或参数排列顺序不同)。
(3):方法的返回类型可以相同也可以不相同。仅仅返回类型不同不足以成为方法的重载。
如果在新类中定义一个方法,其名称、返回类型及参数表正好与父类中方法的名称、返回类型及参数相匹配,那么,新方法被称做覆盖旧方法。
方法覆盖规则如下:
(1):覆盖方法的返回类型、方法名称、参数列表必须与它所覆盖的方法的相同。
(2):覆盖方法不能比它所覆盖的方法访问性差(即访问权限不允许缩小)。
(3):覆盖方法不能比它所覆盖的方法抛出更多的异常。
“集合框架”由一组用来操作对象的接口组成。
常用的接口有:Set,List,Map,常用的实现类有:HashSet,TreeSet,ArrayList,LinkedList,HashMap,TreeMap
6.1 常用集合类ArrayList的使用具体使用方法查看API文档
交流探讨到我的新浪微博:http://weibo.com/tianrui1990
- 1楼debuglist5天前 21:34
- 这些东西语言都实现了,自己使用就好,用的多了,自己就会实现了