java中嵌套接口

本文详细介绍了Java接口的基础概念,包括接口中变量与方法的特点、接口的默认特性,以及接口的嵌套方式。通过具体示例解释了类嵌套接口与接口嵌套接口的不同用法及注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

接口知识点

      1、接口中定义的变量默认是public static final 型,且必须给其初值,所以实现类中不能重新定义,也不能改变其值
      2、接口中的方法默认都是 public abstract 类型的:
      3、接口默认也是abstract的的:public abstract interface xx ===public interface xx
public interface AreaInterface{
     double pai=Math.PI;
     double area();
     interface Neibujiekou{
          viod menthod();
     }
}
public abstract interface AreaInterface{
     public static final double pai  = Math,.PI;
     public abstract double area();
}

嵌套接口

       在Java语言中,接口可以嵌套在类或其它接口中。由于Java中interface内是不可以嵌套class的,所以接口的嵌套就共有两种方式:class嵌套interface、interface嵌套interface。

       1. class嵌套interface
       这时接口可以是public,private和package的。重点在private上,被定义为私有的接口只能在接口所在的类被实现。可以被实现为public的类也可以被实现为private的类。当被实现为public时,只能在被自身所在的类内部使用。只能够实现接口中的方法,在外部不能像正常类那样上传为接口类型。
class A {
    private interface D {
        void f();
    }
    private class DImp implements D {
        public void f() {}
    }
    public class DImp2 implements D {
        public void f() {}
    }
    public D getD() { return new DImp2(); }
    private D dRef;
    public void receiveD(D d) {
        dRef = d;
        dRef.f();
    }
}

public class NestingInterfaces {
    public static void main(String[] args) {
        A a = new A();
        //The type A.D is not visible
        //! A.D ad = a.getD();
        //Cannot convert from A.D to A.DImp2
        //! A.DImp2 di2 = a.getD();
        //The type A.D is not visible
        //! a.getD().f();        
        A a2 = new A();
        a2.receiveD(a.getD());
    }
}
       其中语句A.D ad = a.getD()和a.getD().f()的编译错误是因为D是A的私有接口,不能在外部被访问。语句A.DImp2 di2 = a.getD()的错误是因为getD方法的返回类型为D,不能自动向下转型为DImp2类型。

       2. interface嵌套interface
      由于接口的元素必须是public的,所以被嵌套的接口自动就是public的,而不能定义成private的。在实现这种嵌套时,不必实现被嵌套的接口
classCircle implements  AreaInterface{
    //只需实现area();不用实现menthod();
    double area(){}
}
class Circle implements AreaInterface,AreaInterface.Neibujiekou{
    double area(){}
    viod menthod(){}
}



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值