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...
{
    ...
}**
  • 16
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
Java泛型接口是指在接口中定义泛型类型的接口,可以在接口中使用泛型类型来定义方法参数类型、返回值类型或者接口自身的类型。下面是一个简单的泛型接口示例: ```java public interface MyList<T> { void add(T element); T get(int index); int size(); } ``` 上面的示例中,定义了一个 MyList 接口,使用泛型类型 T 来表示列表中元素的类型,包含了三个方法:add、get 和 size,分别用于向列表中添加元素、获取列表中指定位置的元素和获取列表的大小。 下面是一个实现 MyList 接口的示例代码: ```java public class ArrayList<T> implements MyList<T> { private T[] array; private int size; public ArrayList() { array = (T[]) new Object[10]; size = 0; } @Override public void add(T element) { if (size == array.length) { T[] newArray = (T[]) new Object[array.length * 2]; System.arraycopy(array, 0, newArray, 0, array.length); array = newArray; } array[size++] = element; } @Override public T get(int index) { if (index < 0 || index >= size) { throw new IndexOutOfBoundsException(); } return array[index]; } @Override public int size() { return size; } } ``` 上面的示例中,定义了一个 ArrayList 类,实现了 MyList 接口,使用泛型类型 T 来表示列表中元素的类型。在 add 方法中,如果列表已满,则扩容数组;在 get 方法中,如果索引超出列表范围,则抛出 IndexOutOfBoundsException 异常。 使用泛型接口可以使代码更加通用和灵活,可以适用于各种不同类型的数据结构和算法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海绵hong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值