千家信息网

Java SE面向对象编程的3个常用接口分别是什么

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要为大家分析了 Java SE面向对象编程的3个常用接口分别是什么的相关知识点,内容详细易懂,操作细节合理,具有一定参考价值。如果感兴趣的话,不妨跟着跟随小编一起来看看,下面跟着小编一起深入
千家信息网最后更新 2026年11月01日Java SE面向对象编程的3个常用接口分别是什么

这篇文章主要为大家分析了 Java SE面向对象编程的3个常用接口分别是什么的相关知识点,内容详细易懂,操作细节合理,具有一定参考价值。如果感兴趣的话,不妨跟着跟随小编一起来看看,下面跟着小编一起深入学习" Java SE面向对象编程的3个常用接口分别是什么"的知识吧。

1.Comparable

前言,想要排序Student.有代码:

import java.util.Arrays; class Student {    public int age;    public String name;    public double score;     public Student(int age, String name, double score) {        this.age = age;        this.name = name;        this.score = score;    }     @Override    public String toString() {        return "Student{" +                "age=" + age +                ", name='" + name + '\'' +                ", score=" + score +                '}';    }} public class TestDemo {    public static void main(String[] args) {        Student[] students = new Student[3];        students[0] = new Student(12,"niubi",99.9);        students[1] = new Student(20,"liuren",18.9);        students[2] = new Student(80,"laoren",50.9);        System.out.println(Arrays.toString(students));         Arrays.sort(students);         System.out.println(Arrays.toString(students));    }}

此代码运行报错:

原因: 没有告诉要如何进行排序,是年龄还是姓名还是分数.没有告诉比较的规则

解决方式:

如果自定义的数据类型 进行大小比较 一定要实现可以比较的接口

import java.util.Arrays; class Student implements Comparable{    public int age;    public String name;    public double score;     public Student(int age, String name, double score) {        this.age = age;        this.name = name;        this.score = score;    }     @Override    public String toString() {        return "Student{" +                "age=" + age +                ", name='" + name + '\'' +                ", score=" + score +                '}';    }     //谁调用这个方法 谁就是this    @Override    public int compareTo(Student o) {        //return this.age - o.age;//从小到大        return o.age - this.age;//从大到小    } } public class TestDemo {     public static void main(String[] args) {        Student[] students = new Student[3];        students[0] = new Student(12,"niubi",99.9);        students[1] = new Student(6,"liuren",18.9);        students[2] = new Student(80,"laoren",50.9);        System.out.println("比较前 "+Arrays.toString(students));         Arrays.sort(students);//默认从小到大排序         System.out.println("比较后 "+Arrays.toString(students));    }}

如果要 分数比较 和 姓名比较

  //谁调用这个方法 谁就是this    @Override    public int compareTo(Student o) {        //return this.age - o.age;//从小到大        //return o.age - this.age;//从大到小        return (int) (this.score - o.score);//分数排序        return this.name.compareTo(o.name);//姓名排序    }

缺点: 这个接口对类的侵入性非常强.一旦写好了,不敢轻易改动.

如何降低对类的侵入性呢?

使用Comparator

2.Comparator 比较器

import java.util.Arrays;import java.util.Comparator; class Student1 {    public int age;    public String name;    public double score;     public Student1(int age, String name, double score) {        this.age = age;        this.name = name;        this.score = score;    }     @Override    public String toString() {        return "Student{" +                "age=" + age +                ", name='" + name + '\'' +                ", score=" + score +                '}';    }} class AgeComparator implements Comparator{    @Override    public int compare(Student1 o1, Student1 o2) {        return o1.age - o2.age;    }} class ScoreComparator implements Comparator{    @Override    public int compare(Student1 o1, Student1 o2) {        return (int) (o1.score - o2.score);    }} class NameComparator implements Comparator{    @Override    public int compare(Student1 o1, Student1 o2) {        return o1.name.compareTo(o2.name);    }} public class TestDemo1 {     public static void main(String[] args) {        Student1[] students1 = new Student1[3];        students1[0] = new Student1(12,"niubi",99.9);        students1[1] = new Student1(6,"liuren",18.9);        students1[2] = new Student1(80,"laoren",50.9);        System.out.println("比较前 "+Arrays.toString(students1));         AgeComparator ageComparator = new AgeComparator();        Arrays.sort(students1,ageComparator);        System.out.println("比较后(按年龄) "+Arrays.toString(students1));         ScoreComparator scoreComparator = new ScoreComparator();        Arrays.sort(students1,scoreComparator);        System.out.println("比较后(按姓名) "+Arrays.toString(students1));         NameComparator nameComparator = new NameComparator();        Arrays.sort(students1,nameComparator);        System.out.println("比较后(按分数) "+Arrays.toString(students1));    }}

运行结果:

优点:对类的侵入性非常弱.

3.Cloneable

面试问题:

你知道Cloneable接口吗?为啥这个接口是一个空接口?有啥作用?

空接口 -> 标志接口 -> 代表当前这个类是可以被克隆的.

class Person implements Cloneable{    public int age ;    public void eat(){        System.out.println("吃!");    }     @Override    public String toString() {        return "Person{" +                "age=" + age +                '}';    }     @Override    protected Object clone() throws CloneNotSupportedException {        return super.clone();    }}public class TestDemo2 {    public static void main(String[] args) throws CloneNotSupportedException {        Person person = new Person();        person.age = 99;        Person person2 = (Person) person.clone();        System.out.println(person.age);        System.out.println(person2.age);         System.out.println("==========");        person2.age = 199;        System.out.println(person.age);        System.out.println(person2.age);    }}

运行结果:

注意事项:

  • 1.引用的对象要想被克隆,必须实现Cloneable接口.

  • 2.必须重写克隆方法,并且声明异常.

关于" Java SE面向对象编程的3个常用接口分别是什么"就介绍到这了,更多相关内容可以搜索以前的文章,希望能够帮助大家答疑解惑,请多多支持网站!

接口 排序 对象 分数 姓名 常用 编程 从小到大 从小 方法 运行 代码 内容 就是 年龄 知识 结果 跟着 还是 事项 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 百单网互联网科技有限公司怎么样 华服互联网科技靠谱吗 互联网科技未来 合肥互联网科技公司 有木互联网科技 中正互联网科技招聘 互联网科技创新企业排名 蓝色互联网科技 互联网和高科技公司 福州新华互联网科技学校 知乎 卓翼科技产业互联网合作 工业互联网展湾科技股份有限公司 工业互联网山东科技大学 伍佰万互联网科技怎么赚钱 珠海东科互联网科技有限公司 万物互联网智能科技 互联网领先科技活动 西安左小互联网科技有限公司 绵阳真晨互联网科技有限公司 杭州科技互联网公司有哪些 互联网科技工作委员会毛军 科技制造互联网公司 华中科技大学互联网 上海万想互联网科技 互联网科技素材视频竖屏 重庆威客帮互联网科技 新兴科技互联网创新大赛颁奖典礼 伍佰万互联网科技怎么赚钱 互联网与数字科技关系 平安好医生打造互联网科技医疗
0