Java接口Interface的定义和实现

前言

抽象类是从多个类中抽象出来的模板,如果将这种抽象进行的更彻底,则可以提炼出一种更加特殊的“抽象类”——接口(Interface)。接口是 Java 中最重要的概念之一,它可以被理解为一种特殊的类,不同的是接口的成员没有执行体,是由全局常量和公共的抽象方法所组成。

接口

一、接口的使用

1.1、接口使用interface来定义

1.2、在java中接口和类是两个并列的结构

二、如何定义接口

2.1、在jdk7及以前只能定义全局常量和抽象方法

  • 全局常量:public static final
  • 抽象方法:public abstract

2.2、jdk8,除了可以定义全局常量和抽象方法,还可以定义静态方法和默认方法

三、接口中不能定义构造器,意味着接口不可以实例化

四、java开发中,接口通过让类去实现(implements)的方式来使用

4.1 如果实现类覆盖了接口中所有的抽象方法,那么这个类可以实例化

4.2 如果实现类没有覆盖了接口中所有的抽象方法,那么此实现类仍是一个抽象类

  • java类可以实现多个接口------>>弥补了Java类的单继承的局限性
  • 格式:class A extends B implements C,D,E
  • 接口与接口之间可以多继承

五、定义接口

  • public 表示接口的修饰符,当没有修饰符时,则使用默认的修饰符,此时该接口的访问权限仅局限于所属的包;
  • interface_name 表示接口的名称。接口名应与类名采用相同的命名规则,即如果仅从语法角度来看,接口名只要是合法的标识符即可。如果要遵守 Java 可读性规范,则接口名应由多个有意义的单词连缀而成,每个单词首字母大写,单词与单词之间无需任何分隔符。
  • extends 表示接口的继承关系;
  • interface1_name 表示要继承的接口名称;
  • constant_name 表示变量名称,一般是 static 和 final 型的;
  • returnType 表示方法的返回值类型;
  • parameter_list 表示参数列表,在接口中的方法是没有方法体的。

注意:一个接口可以有多个直接父接口,但接口只能继承接口,不能继承类。

实现接口

1.通过一个类的继承实现

定义一个水果类实现标准。

package aaa; //包
interface Fruits{
    
      //接口标准
  public abstract String eat();  //接口方法
  public abstract String think(); //接口方法
  }
class Student implements Fruits{
    
       //子接口实现
@Override   //注解:准确覆写
	public String eat() {
    
      //覆写方法
    return "苹果";
    }
@Override
    public String think() {
    
    
	return "香蕉";
	}	
}
public class ZS{
    
    
public static void main(String args[]) {
    
    
	Fruitsa=new Student();  //实例化对象
	System.out.println(a.eat()+a.think());	//输出
    }
}

输出:苹果香蕉

2.在接口内部通过内部类实现

package aaa;
interface Fruits{
    
    
public abstract String eat();
public abstract String think();
class Student implements Fruits{
    
      //类内部接口实现
	public String eat() {
    
    
		return "苹果";
	}
	public String think() {
    
    
		return "香蕉";
	}
  }
}
public class ZS{
    
    
public static void main(String args[]) {
    
    
	Fruits.Student a=new Fruits.Student(); //实例化
	System.out.println(a.eat()+a.think());	
    }
}

此时注意实例化方式:外部类.内部类 内部类对象=new 外部类.内部类();
如果要定义方法输出,则方法定义为static类型。

猜你喜欢

转载自blog.csdn.net/m0_55400356/article/details/129762602