欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 旅游 > java接口

java接口

2025/2/21 3:09:38 来源:https://blog.csdn.net/qq_73993301/article/details/145691465  浏览:    关键词:java接口
为什么会有接口:
java的继承问题:一个子类只能继承一个父类( java的单继承
接口: 一个子类可以实现多个接口
接口本身是抽象的,在其中的方法是抽象方法,变量是抽象
特征
  • 接口用interface实现,子类继承用implements
  • 接口中所有的成员变量都是由public static final修饰的(公有的静态常量)
  • 接口中所有的方法默认都是由public abstract修饰的(抽象方法)

  • 接口当中也是没有构造器的,不能被实例化
  • 接口当中的方法全部都是抽象方法,和抽象类不一样
  • 接口和接口之间可以互相继承(继承的本质:代码的复用) 用extends,任何实现子接口的类都需要实现父接口和子接口内的方法(抽象的)
接口是对方法的抽象, 子类必须实现父类的抽象方法
排序:实现comparable接口,重写里面的抽象方法,实现自定义排序。
Person 与compareTo里面的类型对应
从小到大:(从大到小的话反过来o.age-age)
Arrays.sort(数组名)
Arrays.sort() 是一个通用的排序方法,用于对数组进行排序。它的实现依赖于对象的比较能力。具体来说:
  • 如果数组中的元素是基本数据类型(如 int[]、double[] 等),Arrays.sort() 会直接比较它们的值。
  • 如果数组中的元素是对象类型(如 Integer[]、String[] 或自定义类的数组),Arrays.sort() 会检查这些对象是否实现了 Comparable 接口。
接口本身不能被实例化,但可以作为引用类型来引用实现了该接口的对象。Comparable[]。要求这个类型必须实现Comparable接口
Comparable[] 是一个数组,它的元素类型是Comparable 接口。这意味着这个数组可以存储任何实现了Comparable 接口的对象。例如:
Comparable[] arr = {new Integer(5), new String("abc"), new Person("Alice", 25)};
在这个数组中:
  • Integer 实现了 Comparable 接口。
  • String 实现了 Comparable 接口。
  • Person(假设它实现了 Comparable 接口)也实现了 Comparable 接口。
虽然这些对象是不同类型,但它们都实现了 Comparable 接口,因此可以存储在同一个 Comparable[] 数组中。

接口和抽象类的区别?

抽象类一般作为 父类实现。
抽象类之所以被提出来,原因之一是: 子类会重写父类的方法和变量
抽象类之所以被提出来,原因之二是: 将子类当中共性的代码进行提取
抽象类只需要做 方法的定义,不需要实现。只要继承抽象类, 子类必须实现父类(抽象类)中的抽象方法
抽象类的特点:
  1. abstract 修饰的类叫抽象类,由 abstract 修饰的方法叫抽象方法
  2. abstract修饰的抽象方法,不在抽象类当中去实现,更多的作为子类必须实现的方法的定义
  3. 抽象类当中才能有抽象方法,普通类当中不能有抽象方法
  4. 抽象类当中不一定全是抽象方法,也可以使用普通方法,普通方法可以不用重写
  5. 抽象类不能被实例化(不能创建它的对象),原因在于没有构造器
  6. final 不能和 abstract 同时使用:final关键字作用在类上面不能被继承,final关键字作用在方法上面不能被重写,会冲突
  7. 抽象方法不能使用static,static是针对类层次,抽象方法是针对对象层次的,所以不能一起使用。
  8. 子类继承抽象类后,如果不想实现抽象类中的抽象方法,那么子类必须是个抽象类
  9. 抽象类一定是父类
public class OuterClass {static abstract class AbstractStaticInnerClass {static void staticMethod() {System.out.println("Static method in abstract static inner class");}abstract void abstractMethod();}public static void main(String[] args) {AbstractStaticInnerClass.staticMethod(); // 调用静态方法ConcreteStaticInnerClass concrete = new ConcreteStaticInnerClass(); // 创建静态内部类的实例concrete.abstractMethod();}
}class ConcreteStaticInnerClass extends OuterClass.AbstractStaticInnerClass {void abstractMethod() {System.out.println("Implemented abstract method");}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词