Java中的“特殊的抽象类”——接口

这是我参与更文挑战的第5天,活动详情查看: 更文挑战java

接口

在学习接口以前咱们一样要问本身两个问题web

1.什么是接口?markdown

2.接口用来干什么?post

首先让咱们来回答第一个问题:什么是接口?学习

能够说接口是一种“特殊的抽象类”。接口中不能包含普通方法,全部的方法都须要是抽象方法。但java8
中接口有了些改动,容许在接口中定义默认方法,默认方法能够有方法体。
接口是从多个类中抽象出来的规范,这意味着接口里一般定义的是一组公用方法,接口不提供任何实现。

复制代码

接口的定义

和定义类有些不一样,接口经过interface关键字来定义。spa

public interface 接口名 extends 父接口1,父接口2{//也能够米有父接口
    常量1;
    常量2;
    //也能够没有常量
    抽象方法1;
    抽象方法2;
    .......//也能够没有抽象方法
}
/*
修饰符public若是省略,则默认采用包访问权限。
*/
/*
1.接口中的成员变量默认使用public static fianl来修饰,所以接口中只能定义常量,不能定义变量,
而且常量在定义时就要初始化。
2.接口中的方法若是不是默认方法或类方法,默认使用public abstract 来修饰。
3.接口中的全部成员均是public访问权限,所以在重写接口中的方法时必定不能省略public
*/
复制代码

下面咱们来看一个具体例子code

public interface InterfaceA {
	public static int MAX_NUMBER=100000;//常量
	public void speak(String s);//抽象方法,默认使用abstract修饰
	public static void show(){
		System.out.println("我是类方法,必需要有方法体");
	}
	public default void Print(){
		System.out.println("我是默认方法,必需要有方法体");
	}
}
复制代码

接下来咱们看第二个问题,接口能用来干什么?orm

总结起来接口主要有以下用途:对象

  1. 定义变量接口

  2. 调用其余接口中定义的常量

  3. 被其余类实现。

咱们来看一个具体代码来分析

public interface InterfaceA {
	public static int MAX_NUMBER=100000;//常量
	public void speak(String s);//抽象方法,默认使用abstract修饰
	public static void show(){
		System.out.println("我是类方法,必需要有方法体");
	}
	public default void Print(){
		System.out.println("我是默认方法,必需要有方法体");
	}
}

import java.util.Scanner;

public  class Test implements InterfaceA {
	public Test(){
	}
	public void speak(String s){//权限只能是public
		System.out.println(s);
	}
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		Test test=new Test();//test中有重写的speak方法,默认的Print方法
		test.speak("我是重写的方法");
		test.Print();
		InterfaceA A=new Test();//A是上转型对象,A只能调用父类中的方法即Print()和show()方法,和子类重写的方法
		A.Print();
		A.speak("我是上转型对象");
		InterfaceA.show();//类变量和类方法经过类名来调用。
		System.out.println(MAX_NUMBER);
	}
}
复制代码

充分利用接口能够极好的下降程序各模块之间的耦合,从而提升系统的可扩展性和可维护性。

关于接口的一些特色咱们就学习到这里,若是以上内容有错误或遗漏之处,欢迎你们留言指正!

/* 关于接口和抽象类的一些区别和联系,建议你们去b站观看学习。*/

相关文章
相关标签/搜索