Java关于接口引用子类对象
如有Person接口Student类实现了Person接口,那为什么有时候要用Students=newStudent();Personp=s;p.run();这样Stud...
如有Person接口 Student类实现了Person接口,那为什么有时候要用 Student s=new Student(); Person p=s; p.run();这样 Student s=new Student(); s.run();不是一样吗,第一种有什么用
展开
4个回答
2013-06-17
展开全部
为什么使用接口 两个类中的两个类似的功能,调用他们的类动态的决定一种实现,那他们提供一个抽象父类,子类分别实现父类所定义的方法。
问题的出现:Java是一种单继承的语言,一般情况下,哪个具体类可能已经有了一个超类,解决是给它的父类加父类,或者给它父类的父类加父类,只到移动到类等级结构的最顶端。这样一来,对一个具体类的可插入性的设计,就变成了对整个等级结构中所有类的修改。
接口是可插入性的保证。
在一个等级结构中的任何一个类都可以实现一个接口,这个接口会影响到此类的所有子类,但不会影响到此类的任何超类。此类将不得不实现这个接口所规定的方法,而其子类可以从此类自动继承这些方法,当然也可以选择置换掉所有的这些方法,或者其中的某一些方法,这时候,这些子类具有了可插入性(并且可以用这个接口类型装载,传递实现了他的所有子类)。
我们关心的不是那一个具体的类,而是这个类是否实现了我们需要的接口。
接口提供了关联以及方法调用上的可插入性,软件系统的规模越大,生命周期越长,接口使得软件系统的灵活性和可扩展性,可插入性方面得到保证。
类型
使用Java接口将软件单位与内部和外部耦合起来。使用Java接口不是具体的类进行变量的类型声明,方法的返还类型声明,参量的类型声明,以及数据类型的转换。
在理想的情况下,一个具体的Java类应当只实现Java接口和抽象Java类中声明的方法,而不应当给多余方法。
问题的出现:Java是一种单继承的语言,一般情况下,哪个具体类可能已经有了一个超类,解决是给它的父类加父类,或者给它父类的父类加父类,只到移动到类等级结构的最顶端。这样一来,对一个具体类的可插入性的设计,就变成了对整个等级结构中所有类的修改。
接口是可插入性的保证。
在一个等级结构中的任何一个类都可以实现一个接口,这个接口会影响到此类的所有子类,但不会影响到此类的任何超类。此类将不得不实现这个接口所规定的方法,而其子类可以从此类自动继承这些方法,当然也可以选择置换掉所有的这些方法,或者其中的某一些方法,这时候,这些子类具有了可插入性(并且可以用这个接口类型装载,传递实现了他的所有子类)。
我们关心的不是那一个具体的类,而是这个类是否实现了我们需要的接口。
接口提供了关联以及方法调用上的可插入性,软件系统的规模越大,生命周期越长,接口使得软件系统的灵活性和可扩展性,可插入性方面得到保证。
类型
使用Java接口将软件单位与内部和外部耦合起来。使用Java接口不是具体的类进行变量的类型声明,方法的返还类型声明,参量的类型声明,以及数据类型的转换。
在理想的情况下,一个具体的Java类应当只实现Java接口和抽象Java类中声明的方法,而不应当给多余方法。
2013-06-17
展开全部
在你这里是完全一样的, 其实有很多人认为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");//前提是他知道自己是谁。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
有时候我们将一个“学生”看做“一个人”,并不在意他是什么职业,比如还有一个类叫Teacher,他也是一个人,这时候,学生和老师在“人”这个层次就具有共性了,当你针对这个层面进行编程时,Person类型的引用就会帮你屏蔽他们独有的特性,给你提供统一的接口。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-06-17
展开全部
如果还有其他类实现了person这个接口 那么 p 还可以指向那个类的对象;定义成Student p就只能指向 student类型你就一个student实现了person 没其他东西了 用p。。。或用st。。 声明用起来都一样吧可能是这样
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询