Java&&接口嵌套

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

1. class嵌套interface
这时接口可以是public,private和package的。重点在private上,被定义为私有的接口只能在接口所在的类被实现。可以被实现为public的类也可以被实现为private的类。当被实现为public时,只能在被自身所在的类内部使用。只能够实现接口中的方法,在外部不能像正常类那样上传为接口类型。


2. interface嵌套interface
由于接口的元素必须是public的,所以被嵌套的接口自动就是public的,而不能定义成private的。在实现这种嵌套时,不必实现被嵌套的接口。

程序示例(摘抄改编自《Thinking in Java》):

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类型。


在 Java 中,`>` 符号被称为“大于运算符”,它是一种关系运算符,用于比较两个操作数的大小。如果左侧的操作数大于右侧的操作数,则返回 `true`;否则返回 `false`[^2]。 以下是关于 `>` 运算符的一些重要说明: 1. **基本用法** 它通常被用来比较数值类型的变量(如整型、浮点型)。例如: ```java int a = 5; int b = 3; boolean result = (a > b); // 返回 true ``` 2. **与其他逻辑表达式的组合** 可以将 `>` 和其他条件一起嵌套到更复杂的布尔表达式中。例如: ```java int age = 18; if (age > 10 && age < 20) { System.out.println("Age is between 11 and 19"); } ``` 3. **字符串中的使用** 虽然可以对字符串使用 `>`,但它实际上会基于 Unicode 值进行字典顺序的比较。因此需要注意其行为可能不符合直观预期。例如: ```java String str1 = "apple"; String str2 = "banana"; boolean comparison = (str1.compareTo(str2) > 0); // 使用 compareTo 方法实现相同功能 ``` 4. **泛型上下文中与 Comparable 的关联** 当提到 `Comparable` 接口时,类实现了该接口意味着它可以定义自身的自然排序方式。此时可以通过重写 `compareTo()` 方法来指定如何判断对象之间的相对次序。而这种比较可能会涉及类似于 `>` 的逻辑判定过程。例如,在自定义类中实现如下代码片段: ```java public class Person implements Comparable<Person> { private int id; @Override public int compareTo(Person other) { return Integer.compare(this.id, other.id); } // Getter & Setter omitted for brevity. } ``` 通过上述例子可以看出,虽然直接使用的不是 `>` 符号本身,但在内部机制上仍然依赖于类似的比较原理[^1]。 ### 注意事项 当处理浮点数时要特别小心精度丢失问题以及由此引发的潜在错误结果。此外还应注意不同类型间隐式转换可能导致意外的结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值