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();是不行的吗
如有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学精通???