JAVA中的多态和接口有什么区别、有什么用?怎么用,最好有个例子,好的话我会加分的、谢谢了。

2025-02-25 23:22:06
推荐回答(4个)
回答1:

我嘞个去,竟然还有人说多态没有用的。
我且说明一点,如你:
父类:
public class A{
public void a(){
System.out.println("a");
}
}
子类1:
public class A1 extends A{
public void a(){
System.out.println("a1");
}
}
子类2:
public class A2 extends A{
public void a(){
System.out.println("a2");
}
}
测试类如下:
public class Test{
public static void main(String[] args){
A a = new A();
A a1 = new A1();
A a2 = new A2();
a.a();
a1.a();
a2.a();
}
}
毫无疑问,结果如下:
a
a1
a2
为啥它能够正确地调用a()方法呢,因为多态、动态绑定。
这也就是说,当你有一个基类,比如说形状类Shape,然后其有一个方法getDesc()获得其描述。Shape的子类Circle,Triangle,各自重载其父类的getDesc()方法,Circle的getDesc()返回“我是圆形”,Triangle的getDesc()返回“我是三角形”。然后某一个类的某一个方法如下:
String test(Shape shape){
return shape.getDesc();
}
你在调用test()方法时可里往里面传的参数类型可以是Shape、Circle或Triangle,多态能够保证getDesc()方法被正确调用,这叫动态绑定,从而你不用写三个如下的方法,即test(Shape s),test(Circle c),test(Triangle t)。
我嘞个去,没有多态,那还叫面向对象吗?!

回答2:

举个例子,当B类和C类都继承了A类,那么B C类都拥有了A类的所有方法,而且B C类还可以根据需求写自己的方法,这不是多态了吗。。
接口,也可以说是一个标准。例如:定义了一个Dao的接口A。这个接口只有一个方法save(D d),保存数据到数据库里面。然而,B类实现了A接口,那么他就得实现save(D d)这个方法吧,他用JDBC来实现存储数据这功能,可以吧?是可以的。还有一个C类也实现了A接口,可是他hibernate来实现这存储数据这功能,也是可以的。最后B C类都可以用save这方法,把数据保存到了数据库,可是他们的实现方式不一样,但最终还是遵循同一个标准。
还有一个常见的例子,各种各样的显卡插在同一个主板都可以用。为什么,因为所有的显卡商都是按照同一个标准做的啊。只不过性能的好坏,就看各自的能力了。

回答3:

人家没说多态没有用,只是问有什么用,怎么用的。

回答4:

这种概念问题还是找本好点的OOP书看看吧。