目录
一.抽象类
二.接口
三.一些重要的接口
1.Comparable
一.compareTo
2.Compartor//作为比较器
一compare方法
运行结果:编辑
1.使用abstract修饰的方法,叫做抽象方法。
2.包含抽象方法的类,必须设计为抽象类,使用abstract修饰这个类
3.抽象类是不能够进行实例化的。
4.抽象类中,可以有和普通类一样的方法,成员。最突出的和普通类不一样的地方是,就是抽象类不可以进行实例化
5.抽象类虽然不可以进行实例化,但是可以被继承。
6.当一个普通类继承这个抽象类之后,如果这个抽象类当中包含抽象方法,那么需要重写这个抽象方法,否则代码不能通过编译
7.如果抽象类A继承另一个抽象类B,那么此时这个抽象类A可以不重写B中的抽象方法。
8.抽象方法不能是private,static,final的
1.使用interface来定义接口
2.接口当中的成员变量,默认都是public static final来修饰的
3.接口当中的成员方法,默认都是抽象方法public abstract来修饰的
4.接口当中的普通成员的方法,是不能够有具体的实现的
5.接口当中的普通成员方法,如果有具体的实现,必须加上default修饰
6.接口中可以有静态的成员方法,但是不管是静态的方法还是default方法,都是public修饰的
7.接口也是不可以进行实例化的
8.类和接口的关系是使用implements来关联的
9.一个接口可以引用具体实现类的,向上转型
10.接口当中 不能有静态,实例代码块,构造方法
11.一个抽象类实现一个借口,可以不重写这个抽象方法。但是如果有其他非抽象类继承这个抽象类,则要将继承的抽象类以及接口所有的抽象方法都要进行重写。
当一个类重新继承这个接口的时候,可以将compareTO方法重写,此时进行Arrys.sort的排序时,可以进行动态绑定,根据自己重写的compareto方法来进行排序
比较器是自己自定义敲的,首先比较器要先继承Compareor接口。然后重新compare方法,可以进行单个的引用类型,或者基本类型的比较器进行比较,同时可以用Arrys.sort方法写入的比较器自定义Arry.sort方法的排序规则,具体我们可以根据以下代码来看出
public class Student {
String name;
int age;
String SEx;
public Student(String name, int age, String SEx) {
this.name = name;
this.age = age;
this.SEx = SEx;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
", SEx='" + SEx + '\'' +
'}';
}
}
//student类
import java.util.Comparator;
public class AgeCompare implements Comparator {
@Override
public int compare(Student o1, Student o2) {
return o1.age- o2.age;
}
}
//年龄比较器
import com.sun.xml.internal.ws.api.model.wsdl.WSDLOutput;
import java.util.Arrays;
public class Test {
public static void main(String[] args){
Student students[]=new Student[3];
students[0]=new Student("大鹏",18,"男");
students[1]=new Student("小鹏",17,"男");
students[2]=new Student("中鹏",16,"男");
System.out.println("----------排序前---------");
System.out.println(students[0]);
System.out.println(students[1]);
System.out.println(students[2]);
System.out.println("----------按照年龄比较器排序后---------");
AgeCompare ageCompare=new AgeCompare();
Arrays.sort(students,ageCompare);
System.out.println(students[0]);
System.out.println(students[1]);
System.out.println(students[2]);
System.out.println("--------------单个比较----------");
int temp=ageCompare.compare(students[0],students[1]);//用来比较二者相差多少岁
}
}