永发信息网

Java接口可以有对象吗

答案:7  悬赏:50  手机版
解决时间 2021-05-09 15:32

ServletContext application = this.getServletContext();
out.println(application.getClass().getName());

这里ServletContext不是接口吗 怎么可以像类一样实例化一个对象

而且getServletContext()的定义是

public ServletContext getServletContext()

是返回一个ServletContext接口吗?

最佳答案

接口不能直接实例化,


只能new 一个它的实现类


这个方法中确实new了一个public ServletContext getServletContext();但是这个方法中new的实现这个接口的类,所以说不是接口被实例化了,


你多去了解一下多态吧,这就是接口的好处


全部回答

接口是一种类型。

你可以用它来定义一个变量。

但是你不能new它,只能New实现了这个接口的具体类。(注意是具体类!)

它没有实例化 ,而这个方法getClass().是静态getClass().,直接用类名调用 ,而你又给那个类定义了变量名,明白了吗 接口里的方法都是静态的 你想用就得直接那类名调用

ServletContext application = this.getServletContext();

这句只不过是得到了一个ServletContext类型的对象,而并没有实例化ServletContext咯,这里的this代表HttpServlet,而HttpServlet是个abstract类

接口是不可以实例化的,ServletContext application 这只是个声明,而this.getServletContext();得到的是他的实现类一个实例;而public ServletContext getServletContext()是返回一个ServletContext接口类型的一个实现类的实例。像父类来声明子类得到子类对象意思上是一样的。
知道匿名类么,可以用匿名类来NEW一个接口 ,但是不可以理解为实例化借口,因为接口是不可以实例化的.给你发个联接 http://hi.baidu.com/lkdlhw_2000/blog/item/cc8f29d0aa12718ea0ec9cd8.html 这里有匿名内部类实现借口的应用,希望可以帮助到你

接口可以像以父类对象引用子类对像的方式来引用实现该接口的类。

getServletContext()返回的是实现了ServletContext接口的类对象。

如:

public interface List{

void add(Object obj);

}

public class ArraryList implements List{

public void add(Object obj){

}

}

//测试

public class test{

//用接口来引用实现它的类对象

List list=new ArrayList();

list.add();

//这样可以系统的调用接口的方法,对系统的架构有很大的好处。也方便使用。

}

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我正在上网 突然弹出一个窗口说以计算机管理
胜堂路/胜大路(路口)在哪里啊,我有事要去这
工行牡丹灵通卡能社为淘宝的收款帐户吗?
有什么适合初中生看的英语杂志和书
骐达有那几种颜色,有绿色吗?
剑侠情缘三,女生适合玩什么职业
QQ等级四个太阳以后是什么捏?
★相知是缘★相守是份★缘是天定★份是人为★
洗面奶拆了保质期多久,花王生产日期怎么看
金恒德国际汽车汽配用品城我想知道这个在什么
怎么看好友的全部图标
14岁掉牙还会不会长?
有翅膀飞不起来
我想问大家对于孩子到底是早些管教还是晚些管
MP5被要求格式化
推荐资讯
表达友情爱情的诗词,描写友情古诗
去香港旅游应该准备些什么哦 还需要什么证件
谁送我一个q宠猪猪啊???
油锅盔手工馍在什么地方啊,我要过去处理事情
什么时候能回到过去。今天一些事情触动了我的
怎样让人变壮?
怎样才能让车身变得更轻
我的白头发
我的本是三星R467怎么玩个CS也偶尔会卡!
我的双腿酸嘛是怎么回事
同福菜馆我想知道这个在什么地方
怎么样开导自己?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?