扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
这是一些新手问到一个问题,说是在接口后面能不能使用new操作符!
这是一些语法基础知识,需要借助于工具才能快速提高。能与不能,直接写一个看看即可。
看例子:
public interface Humans{
}
如果我们手中没有Humans的具体实例类,又要在程序中用到一个。比如测试啊什么的!
Object obj=new Humans(){};
上面的语句是对的,其实不要认为接口能直接实例化了,注意后面还有"{}",这里其实new出来的是一个Humans的实现类,而在java内部,是一个匿名内部类。
下面再看一个接口:
interface Animal
{
void eat();
}
错误的形式(编译都通不过的):
Animal a=new Animal(){};
正确的形式:
Animal a=new Animal()
{
public void eat(){
System.out.println("吃东西了!");
}
};
要直接在new后面跟接口名称来实例化一个接口是不可能的,还必须保证接口名称后面有完整的实现体。现在应该明白其实质了吧,我们new其实是操作在匿名内部类上的,不是用在接口本身上。接口本身是不能实例化的!
在一些框架(如EasyJWeb)中,经常使用匿名内部类的方式来写回调实现,因为其语法比较简洁,也不会创建一些多余的没有独立能力的类。
当然,作为一般的应用肯定很少用,这需要借助于开发工具。这些基础问题他都会提示你,何时对,何时错!
查看本文来源
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者