Java实现接口可以定义变量吗直接用接口里面定义的变量吗?

java中定义了一个接口A没有类实现A接口。B类声明了一个A接口类型的变量privateAa;为什么a打点可以调用A接口里的方法不是只有类实例后才能吗,接口不是不能实例化吗... java中定义了一個接口A,没有类实现A接口B类声明了一个A接口类型的变量 private A a;为什么a打点可以调用A接口里的方法。不是只有类实例后才能吗接口不是不能实唎化吗?

你不知道Java多态吗

声明了private A a,这并没有实例化变量,只是有这么一个名字为a的变量而已直接用a.方法的话会报空指针异常。

假如类C 实現了A接口

你对这个回答的评价是?

  • 天猫电器城-精选家电,品牌齐全,型号丰富,品质无忧,超值低价特惠,省钱更省心!天猫电器城,全球旗舰,优品价優,闪电送达!

  • 天猫电器城-精选家电,品牌齐全,型号丰富,品质无忧,超值低价特惠,省钱更省心!天猫电器城,全球旗舰,优品价优,快速送达!

}

背景:接口中只有常量不能存茬变量

问题:以上代码中i默认是public static final。请问一下实现接口的过程中是否与继承一样是在本对象的堆空间中开辟一块给父类实例域存放值,如果是这样子的话我认为接口中是可以存在变量的接口规定方法名不规定实现,引申就是规定变量名不规定具体值这样思考不对吗?

PS:請回答大神不要用现状/规定来反推一定要是这样在下还是想好好理解一下OOP的设计思路,感谢

}

先附上有关接口的相关知识


我们假设有一个接口类A 和它得实现类B,简化代码如下:

如果我们要使用B类对象调用B类方法,我们很容易就会习惯的写出

用接口类A声明一个變量demo用实现类B去实例化出对象。为什么不是B demo=new B(); 呢这样也不会有问题啊?(当然A demo=new A();是不可能的因为接口类是不能实例化对象的,但可以作為数据类型(类类型)来声明一个变量)


当通过接口类或实现类去声明对象时,接口类应该是首选的但只有存在适当的接口类型时
我們再来看一个例子,代码如下

我们看到方法batheSelf()仅仅存在实现类中时,若我们仍然使用接口去声明对象时PetInterface p = new Cat()那些仅仅存在实现类中的方法,昰无法直接调用的即p.batheSelf()无法调用会报错所以这时使用Cat p = new Cat()去声明变量是更好的。

也就是说使用接口类去声明对象是有前提条件的——即实现類中全是接口类的方法的实现,没有自的方法当实现类存在自己的方法时,使用实现类来声明变量

如果存在适当的接口类型,那么参數返回值和字段都应该使用接口类型来声明。
如果你养成使用接口类型的习惯你的程序将更加灵活。 如果没有合适的接口存在则通過类引用声明一个对象是完全合适的。

}

我要回帖

更多关于 接口可以定义变量吗 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信