当前位置:编程学习 > JAVA >>

Java关于接口引用子类对象

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

为什么有时候要用

Student s=new Student();

Person p=s;

p.run();

这样

Student s=new Student();

s.run();

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

补充:主要是什么时候用第一种方法好 有什么用
		
追问:就是

Teacher t=new Teacher();

Person p=t;

p.Teach();是不行的吗

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

在你这里是完全一样的,

其实有很多人认为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");//前提是他知道自己是谁。。。

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

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

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

可能是这样

上一个:java编程错误帮帮忙
下一个:到底怎样才能将Java学精通???

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,