文章目录
目录
文章目录
一.接口基本介绍
二、深入讨论
三、注意事项和细节
1.接口不能被实例化
2.接口中所有的方法都是public方法,接口中抽象方法,可以不用abstract修饰 图
一.接口基本介绍
接口就是给出一些没有实现的方法封装到一起。到某个类要使用的时候,再根据具体情况把这些类方法写出来。语法如下
interface 接口名{
//属性
//方法
}
class 类名 implements 接口{
自己属性;
自己方法;
必须实现的接口的抽象方法
}
在jdk8后,可以有默认实现方法,需要使用default关键字
在jdk8后,可以有静态方法
package com.java.interface_;
public interface Ainterface {
//写属性
public int n1=10;
//写方法
//在接口中,抽象方法
public void hi();
//在jdk8后,可以有默认实现方法,需要使用default关键字
default public void ok(){
System.out.println("ok.....");
}
//在jdk8后,可以有静态方法
public static void cry(){
System.out.println("cry....");
}
}
二、深入讨论
对初学者来说,理解接口的概念不算太难,难的是就是不知道什么时候使用接口,下面我列举几个场景。
1.我现在要制造战斗机,武装直升机,专家只需把飞机需要的供应的规格定下来即可,然后让别人具体实
2.现在有一个项目经理管理三个程序员,功能开发一个软件,为了控制和管理软件,项目经理可以定义一个接口,然后由程序员具体实现。
实际要求:3个程序员,编写3个类,分别完成对Mysql Oracle DB2数据库的链接数据库
package com.java.interface_;
public interface Dbinterface {//项目经理
public void connect();
public void close();
}
class MysqlDB implements Dbinterface {
@Override
public void connect() {
System.out.println("mysql正在链接");
}
@Override
public void close() {
System.out.println("mysql正在退出");
}
}
class OracleDB implements Dbinterface {
@Override
public void connect() {
System.out.println("链接Oracle数据库");
}
@Override
public void close() {
System.out.println("退出Oracle数据库");
}
}
class Interface03 {
public static void main(String[] args) {
MysqlDB mysqlDB = new MysqlDB();
t(mysqlDB);
}
public static void t(Dbinterface db){
db.connect();
db.close();
}
}
三、注意事项和细节
1.接口不能被实例化
代码如下(示例):
package com.java.interface_;
public class InterfaceDetail01 {
public static void main(String[] args) {
}
}
//接口不能被实例化
interface IA{ }
2.接口中所有的方法都是public方法,接口中抽象方法,可以不用abstract修饰 图示
代码如下(示例):
package com.java.interface_;
public class InterfaceDetail01 {
public static void main(String[] args) {
}
}
//接口不能被实例化
interface IA{
abstract void say();
}
3. 一个普通类实现接口,就必须将该接口的所有方法都实现。可以使用alt+enter实现来解决
4.抽象类实现接口,可以不用实现接口的方法。
5.一个类同时可以实现多个接口
6.接口中的属性,只能是final的,而且是public static final 修饰符。比如:int
a=1;实际上是public static final int a=1;(必须初始化)
7.接口中属性的访问形式:接口名.属性名
8.一个接口不能继承其他的类,但是可以继承多个别的接口举例
interface A extends B C{ }
9.接口的修饰符 只能是public和默认,这点和类的修饰是一样的
package com.java.interface_;
public class InterfaceDetail02 {
public static void main(String[] args) {
//证明 接口的属性
System.out.println(IB.n1);
//IB.n1=30;不能这样定义
}
}
//一个类同时可以实现多个接口
interface IB {
int n1=10;//等价public static final int n1=10;
void hi();
}
interface IC {
void say();
}
interface ID extends IB,IC{
}
interface IE{}
class Pig implements IB,IC{
@Override
public void hi() {
}
@Override
public void say() {
}
}