永发信息网

Java关于接口引用子类对象

答案:3  悬赏:50  手机版
解决时间 2021-05-03 22:35
  • 提问者网友:黑米和小志
  • 2021-05-03 00:47

有Person接口 Student类实现了Person接口,那

为什么有时候要用

Student s=new Student();

Person p=s;

p.run();

这样

Student s=new Student();

s.run();

不是一样吗,第一种有什么用

最佳答案
  • 五星知识达人网友:渡鹤影
  • 2021-05-03 01:54

在你这里是完全一样的,



其实有很多人认为java的接口是多此一举,没有必要的



java的接口只是为了实现“多继承”和制作java的标准用的,例:


我自己写了一套X软件,里面有A,B两个类,但是A,B是为了满足1,2这两种不同的用户使用的,但是1,2对C完全不了解,他们不知道自己是要用A,还是B,于是我定义了一个接口C;A,B都实现它。


1,2来用X时,都要用C就可以了,1来的时候用,C c = C.newCreate("1");//前提是他知道自己是谁。。。

全部回答
  • 1楼网友:忘川信使
  • 2021-05-03 03:07

如果还有其他类实现了person这个接口 那么 p 还可以指向那个类的对象;

定义成Student p就只能指向 student类型

你就一个student实现了person 没其他东西了 用p。。。或用st。。 声明用起来都一样吧

可能是这样

  • 2楼网友:迟山
  • 2021-05-03 02:21
为什么使用接口  两个类中的两个类似的功能,调用他们的类动态的决定一种实现,那他们提供一个抽象父类,子类分别实现父类所定义的方法。   问题的出现:Java是一种单继承的语言,一般情况下,哪个具体类可能已经有了一个超类,解决是给它的父类加父类,或者给它父类的父类加父类,只到移动到类等级结构的最顶端。这样一来,对一个具体类的可插入性的设计,就变成了对整个等级结构中所有类的修改。   接口是可插入性的保证。   在一个等级结构中的任何一个类都可以实现一个接口,这个接口会影响到此类的所有子类,但不会影响到此类的任何超类。此类将不得不实现这个接口所规定的方法,而其子类可以从此类自动继承这些方法,当然也可以选择置换掉所有的这些方法,或者其中的某一些方法,这时候,这些子类具有了可插入性(并且可以用这个接口类型装载,传递实现了他的所有子类)。   我们关心的不是那一个具体的类,而是这个类是否实现了我们需要的接口。   接口提供了关联以及方法调用上的可插入性,软件系统的规模越大,生命周期越长,接口使得软件系统的灵活性和可扩展性,可插入性方面得到保证。   类型   使用Java接口将软件单位与内部和外部耦合起来。使用Java接口不是具体的类进行变量的类型声明,方法的返还类型声明,参量的类型声明,以及数据类型的转换。   在理想的情况下,一个具体的Java类应当只实现Java接口和抽象Java类中声明的方法,而不应当给多余方法。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯