零基础带你学好JavaSE-抽象类和接口

本文介绍了Java中的抽象类和接口的概念与用法。抽象类使用abstract关键字声明,不能实例化,但可以被继承。接口用interface定义,其中的成员默认为public static final常量和public abstract方法。当类实现接口时,必须实现接口的所有抽象方法。Comparable接口用于自定义排序,Comparator接口则允许自定义比较规则,两者在Arrays.sort方法中发挥重要作用。
摘要由CSDN通过智能技术生成

目录

一.抽象类

二.接口

三.一些重要的接口

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.一个抽象类实现一个借口,可以不重写这个抽象方法。但是如果有其他非抽象类继承这个抽象类,则要将继承的抽象类以及接口所有的抽象方法都要进行重写。

三.一些重要的接口

1.Comparable

一.compareTo

当一个类重新继承这个接口的时候,可以将compareTO方法重写,此时进行Arrys.sort的排序时,可以进行动态绑定,根据自己重写的compareto方法来进行排序

2.Compartor//作为比较器

一compare方法

比较器是自己自定义敲的,首先比较器要先继承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<Student> {

    @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]);//用来比较二者相差多少岁
        


    }

}


运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大鹏在路上_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值