第三周:java面向对象部分总结(2)
2021-03-19 00:25
标签:psc 系统 lse collect 调用 cas pre static 今天 对对象的排序,可以通过以下两种方法: 1、实现Comparable接口,重写compareTo方法; 2、Comparator比较器接口,重写compare方法; 区别:Comparator位于包java.util下,而Comparable位于包java.lang下,Comparable接口将比较代码嵌入自身类中,而后者在一个独立的类中实现比较。 想要对一个类的对象进行排序,需要写一个实现类实现此接口,调用Arrays.sort()或Collection.sort()进行排序,先重写Comparator的实现类中的compare方法,然后将排序的规则写在方法中。 compare(T o1,T o2)方法排序规则: 例如比较年龄: o1.getAge()>o2.getAge()返回 1, o1.getAge() 相等返回0,可继续通过其它属性来比较 最后会按照年龄从小到大来输出。 下面举例比较员工类Emps: 1、先写一个员工类 2、然后是实现类EmpsComparator 3、测试 4、输出 上面代码是通过Arrays.sort(emps,new EmpsComparator())进行排序的,若没有new EmpsComparator()比较规则会显示ClassCastException异常,这默认是从小到大排序的,若想从大到小,只需将返回值1和-1调换。 此接口强行对实现它的每个类的对象进行整体排序。此排序被称为该类的自然排序 ,类的 此接口只需用要排序的类来实现它,然后重写compareTo方法即可,关于这个方法里面是用本类对象和其他类对象进行比较,然后测试类中只需写Arrays.sort(emps);即可比较的规则跟Comparator相同 int compareTo(T o) 比较此对象与指定对象的顺序。如果该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数。 让规范和实现分离正是接口的好处,让系统的各组件之间通过接口耦合,是一种松耦合的设计。软件系统各模块之间也应该采用这种面向接口的耦合,为系统提供更好的可扩展性和维护性。 抽象类与接口的区别 1、组成上:抽象类=普通类的组成+【抽象方法】,接口中只能包含抽象方法,常量,静态方法、默认方法。 2、抽象类和接口均不能直接实例化。 3、接口看成是对抽象类的再次抽象。 4、抽象类受到继承单根性的限制,接口可以多继承。 5、接口可以更好的实现多态。接口一般用于系统间的解耦。一般情况使用面向接口编程。 6、接口不包含构造函数;抽象类可以包含构造函数,抽象类里的构造函数并不是用于创建对象,而是让其子类调用这些构造函数来完成属于抽象类的初始化操作。 7、能用接口地方尽量使用而不要使用抽象类。 8、抽象类一般用于模板设计、适配器设计。 今天就总结到这了,下周继续!!!!!奥里给!!! 第三周:java面向对象部分总结(2) 标签:psc 系统 lse collect 调用 cas pre static 今天 原文地址:https://www.cnblogs.com/stephen-t/p/13764040.html
3、相关接口
(1)Comparator比较器接口
1 package comparator;
2 ?
3 public class Emps {
4 private String name;
5 private int age;
6 private int sal;
7 public Emps(String name, int age, int sal) {
8 this.name = name;
9 this.age = age;
10 this.sal = sal;
11 }
12 public Emps() {}
13 public String getName() {
14 return name;
15 }
16 public void setName(String name) {
17 this.name = name;
18 }
19 public int getAge() {
20 return age;
21 }
22 public void setAge(int age) {
23 this.age = age;
24 }
25 public int getSal() {
26 return sal;
27 }
28 public void setSal(int sal) {
29 this.sal = sal;
30 }
31 @Override
32 public String toString() {
33 return "Emp [ename=" + name + ", age=" + age + ", sal=" + sal + "]";
34 }
35 }
?
1 package comparator;
2 import java.util.Comparator;
3 ?
4 public class EmpsComparator implements Comparator
1 package comparator;
2 import java.util.Arrays;
3 ?
4 public class Test {
5 public static void main(String[] args) {
6 Emps[] emps={
7 new Emps("佐菲",35,30000),//姓名,年龄,工资
8 new Emps("赛文",33,28000),
9 new Emps("杰克",33,25000),
10 new Emps("艾斯",32,24000),
11 new Emps("泰罗",30,22000),
12 };
13 Arrays.sort(emps,new EmpsComparator());
14 for (Emps e:emps) {
15 System.out.println(e);
16 }
17 }
18 }
(2)Comparable接口
compareTo
方法被称为它的自然比较方法 。实现此接口的对象列表(和数组)可以通过 Collections.sort
(和 Arrays.sort
)进行自动排序。 1 package comparator;
2 ?
3 public class Emp implements Comparable
4、接口总结
上一篇:Java实现酒店客房管理系统
文章标题:第三周:java面向对象部分总结(2)
文章链接:http://soscw.com/index.php/essay/66003.html