接口(interface) 和 接口多继承

一时失言乱红尘 2024-04-18 23:31 205阅读 0赞

一、接口

声明格式:

[访问修饰符] interface 接口名 [extends 父接口1, 父接口2 ···] {

常量定义 ;

方法定义 ;

}

  • 接口中每一个方法也是隐式抽象的,接口中的方法会被隐式的指定为 public abstract(只能是 public abstract,其他修饰符都会报错)。
  • 接口中可以含有变量,但是接口中的变量会被隐式的指定为 public static final 变量(并且只能是 public,用 private 修饰会报编译错误)。
  • 接口和实现类不是父子关系,是实现规则的关系。
  • 接口是隐式抽象的,当声明一个接口的时候,不必使用abstract关键字。

要点

  1. 1. 子类通过**implements**来实现接口中的规范。
  2. 2. 接口不能创建实例,但是可用于声明引用变量类型。
  3. 3. 一个类实现了接口,必须实现接口中所有的方法,并且这些方法只能是public的。
  4. 4. JDK1.7之前,接口中只能包含静态常量、抽象方法,不能有普通属性、构造方法、普通方法。
  5. 5. JDK1.8后,接口中可包含普通的**静态**方法。
  6. public class TestInterface{
  7. public static void main(String[] args) {
  8. Vehicle.run();
  9. Vehicle plane = new AirPlane();
  10. plane.sell();
  11. System.out.println(plane.master);
  12. Vehicle car = new Car();
  13. car.color();
  14. car.sell();
  15. }
  16. }
  17. //交通工具接口
  18. interface Vehicle {
  19. String master = "Health"; // 总是public static final类型的;
  20. public static void run(){
  21. System.out.println("i can run!");
  22. }
  23. public abstract void color(); //总是public abstract void color();
  24. public abstract void sell();
  25. }
  26. /**Airplane类实现交通工具接口*/
  27. class AirPlane implements Vehicle{
  28. public void sell() {
  29. System.out.println("I sell for ten million yuan.");
  30. }
  31. public void color() {
  32. System.out.println("I am yellow");
  33. }
  34. }
  35. /**Car类实现交通工具接口*/
  36. class Car implements Vehicle{
  37. @Override
  38. public void color() {
  39. System.out.println("I am red");
  40. }
  41. @Override
  42. public void sell() {
  43. System.out.println("I sell for 1000000 yuan.");
  44. }
  45. }

20190914122157216.png

二、接口多继承

接口支持多继承。和类的继承类似,子接口继承某个父接口,将会获得父接口中所定义的一切。

示例:

  1. interface A {
  2. void testa();
  3. }
  4. interface B {
  5. void testb();
  6. }
  7. /*接口可以多继承:接口C继承接口A和B*/
  8. interface C extends A, B {
  9. void testc();
  10. }
  11. //接口A、B、C都要实现
  12. public class Test implements C {
  13. public void testc() {
  14. }
  15. public void testa() {
  16. }
  17. public void testb() {
  18. }
  19. }

发表评论

表情:
评论列表 (有 0 条评论,205人围观)

还没有评论,来说两句吧...

相关阅读

    相关 interface接口

    1、因为它是抽象的,所以在类中实现(调用)的时候必须要进行方法重写才能使用 ![在这里插入图片描述][watermark_type_d3F5LXplbmhlaQ_shado

    相关 interface接口

    当类中的方法都是抽象方法, 接口格式特点: 1、接口中可以定义常量和抽象方法。 2、接口中成员有固定修饰符:       常量:public static final 

    相关 接口interface

    什么是接口? 一种把类抽象的更彻底,接口里只能包含抽象方法的“特殊类”。接口不关心类的内部状态数据,定义的是一批类所遵守的规范。(它只规定这批类里必须提供某些方法,提供这