java接口详解+练习题(入门可看)

一、接口概述
接口是比抽象更高的抽象,它是一个完全抽象的类,即抽象方法的集合。接口使用关键字interface来声明。

二、接口定义的结构
[修饰符] interface 接口名称{
抽象方法1;
抽象方法2;

举例:定义一个Country接口,有一个国籍nationality属性和一个speak方法

interface 接口名称 // 定义抽象类
{
    
    
    final 数据类型 成员名称 = 常量; //数据成员必须赋初值
    abstract 返回值的数据类型 方法名称(参数...;
    //抽象方法,注意在抽象方法里,没有定义方法主体
}

关于接口定义的注意事项:

  • 接口中也有变量,但是接口会隐匿地指定为public static final变量

  • 接口中的抽象方法具有public和abstract修饰符,也只能是这两个修饰符,其他修饰符都会报错 -

  • 抽象类之间可以继承,同样的,接口之间也可以继承。接口之间继承时,使用的关键字同样为 extends

  • 接口里的“抽象方法”只要做声明即可,而不用定义其处理的方式;

  • 数据成员必须赋初值

三、接口的实现
当类实现接口的时候,类要实现接口中的所有方法,否则类必须声明为抽象类。类使用关键字implements关键字实现接口。

举例:
注意:

  1. 接口无法直接实例化,接口是通过类来实现的implements
  2. 一个类可以实现多个接口,接口间用逗号分隔
  3. 如果实现某接口的类不是抽象类,则该类必须实现指定接口的所有抽象方法
  4. 抽象类也可以实现接口(举例)implements
  5. 接口这间可以多继承 例如:
    *接口之间称为继承extends , 抽象类对接口的关系是实现implements 类与接口的关系也是实现implements
interface IA{
    
     
void ma(); 
} 
interface IB{
    
     
void mb(); 
} 
interface IC extends IA, IB{
    
     //IC 同时继承 IA 和 IB 两个接口 
void mc(); 
} 

四、接口与抽象类
1.接口与抽象类的相同点
都可以被继承
都不能被直接实例化
都可以包含抽象方法
派生类必须实现未实现的方法

2.接口与抽象类的不同点
接口支持多继承,抽象类不能实现多继承
一个类只能继承一个抽象类,但可以实现多个接口
接口中的成员变量只能用publci static final类型的,抽象类中的成员变量可以是各种类型的
接口只能定义抽象方法;抽象类既可以定义抽象方法,也可以定义普通方法
接口中不能含有静态代码块以及静态方法,抽象类可以有静态代码块和静态方法

五.练习题了解
请添加图片描述

package zhou;
public interface interfaceA {
    
    
    public abstract String shi();
    public abstract String shu();
}
class Student implements interfaceA{
    
    
    private String eatery;
    private String dorm;
    Student(String eatery,String dorm){
    
    
        this.eatery=eatery;
        this.dorm=dorm;
    }
    public String shi() {
    
    
        return "食堂"+eatery;
    }
    public String shu() {
    
    
        return "宿舍"+dorm;
    }
}
class Teacher implements interfaceA {
    
    
    private String teachereatery;
    private String schoolflat;
    Teacher(String teachereatery,String schoolflat){
    
    
        this.teachereatery=teachereatery;
        this.schoolflat=schoolflat;
    }
    public String shi() {
    
    
        return "教师食堂"+teachereatery;
    }
    public String shu() {
    
    
        return "学校公寓"+schoolflat;
    }
}
class ParentsofStudents implements interfaceA{
    
    
    private String resthouse;
    ParentsofStudents(String resthouse){
    
    
        this.resthouse=resthouse;
    }
    public String shi() {
    
    
        return "招待所"+resthouse;
    }
    public String shu() {
    
    
        return "招待所"+resthouse;
    }
}
public class Hong {
    
    
    public static void main(String[] args) {
    
    
        Student s=new Student(null, null);
        s.shi();
        s.shu();
        Teacher t=new Teacher(null, null);
        t.shi();
        t.shu();
        ParentsofStudents j=new ParentsofStudents(null);
        j.shi();
        j.shu();
    }
}

六.接口的扩展
接口是Java实现多继承的一种机制,一个类只能继承一个父类,但如果需要一个类继承多个抽象方法的话,就明显无法实现,所以就出现了接口的概念。一个类只可以继承一个父类,但却可以实现多个接口。

接口与一般类一样,均可通过扩展的技术来派生出新的接口。原来的接口称为基本接口或父接口,派生出的接口称为派生接口或子接口。通过这种机制,派生接口不仅可以保留父接口的成员,同时也可加入新的成员以满足实际的需要。

同样的,接口的扩展(或继承)也是通过关键字extends来实现的。有趣的是,一个接口可以继承多个接口,这点与类的继承有所不同。
接口扩展的语法:

**interface 子接口名称 extends 父接口1,父接口2...
{
    
    
    ...
}**

猜你喜欢

转载自blog.csdn.net/weixin_54107527/article/details/121477532