(JAVA)怎么可以实例化接口?这个是匿名内部类吗?

发布于 2022-01-02 05:54:17 字数 1941 浏览 1018 评论 6

@tcxu 你好,想跟你请教个问题:

package nimingneibulei;
public interface IStringDeal {
    public String filterBlankChar();    //声明过滤字符串中的空格的方法(抽象方法)
}

package nimingneibulei;
public class OutString {
    public static void main(String[] args) {

        final String sourceStr = "吉林省 明日 科技有限公司——编程 词典!";//全局常量
        IStringDeal s = new IStringDeal() { // 编写匿名内部类
            @Override
            public String filterBlankChar() {
                // TODO Auto-generated method stub
                String convertStr = sourceStr;
                convertStr = convertStr.replaceAll(" ", ""); // 替换全部空格
                return convertStr; // 返回转换后的字符串
            }
        };
        System.out.println("源字符串:" + sourceStr);// 输出源字符串
        System.out.println("转换后的字符串:" + s.filterBlankChar());// 输出转换后的字符串
    }
}
IStringDeal s = new IStringDeal():第一:为什么接口可以实例化?第二:IStringDeal s = new IStringDeal()是匿名内部类吗?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

柳若烟 2022-01-07 15:46:17

这段回答没看懂,还有这段回答中什么叫“不续命名”?

高跟鞋的旋律 2022-01-06 20:12:03

回复
匿名内部类,匿名内部类也就是没有名字的内部类。正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写。

草莓味的萝莉 2022-01-06 07:59:38
  1. 匿名内部类,就是一个没有(无需)命名的,类定义写在另一个类的定义之内的类。
  2. 就一个普通(有名字)的类而言,要实现 接口 IStringDeal, 就必须定义好它的抽象方法 public String filterBlankChar()。这样才可创建对象,比如创建 实体 s。
  3. 创建出的对象(s)的类型, 就是 接口 IStringDeal 类型。
  4. 如果仅需创建出这个对象(s)一次,以后就无需再提到(用到)这个类的名称,那就不用给这个类起名字,即通过书写匿名类的形式,创建出的对象(s),岂不便捷?

回答问题:
1. 在楼主所示代码中,对象 s 是由(根据)编写好的、通过定义好 抽象方法 public String filterBlankChar()来 实现 接口 IStringDeal 的匿名内部类创建的。就是说,由运算符 new 所引出的构造方法,是一个通过定义好 抽象方法 public String filterBlankChar() 来实现 接口 IStringDeal() 的、不续命名的 类的构造方法。所生成的对象 s 的类型是: IStringDeal。这里,不是实例化接口,而是实例化一个实现接口的、未命名的类。
2."IStringDeal s = new IStringDeal()是匿名内部类吗?"
仔细查看代码发现,紧接其后的一对花括号,即 IStringDeal s = new IStringDeal(){...} 内,给出了抽象方法public String filterBlankChar()的定义。其中,IStringDeal(),表示这个可以被实例化的匿名类的默认的构造方法。

梦里兽 2022-01-06 05:58:49

为什么IStringDeal s = new IStringDeal()是匿名内部类呢?

柳絮泡泡 2022-01-06 03:27:09

回复
java语法是这么规定的,这种形式就叫匿名内部类

清晨说ぺ晚安 2022-01-03 23:37:32

第一:接口不可以实例化,实例化的一个匿名类,这个类实现了这个接口;

第二:是的

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文