Java中的接口和方法

时间:2016-01-14 11:35:15

标签: java methods interface polymorphism

对于Java !! 我们可以在不同的类中实现不同的方法。在接口中,我们创建一个抽象方法,并在实现特定接口的类中提供它的实现。如果我们可以单独在类中创建和实现方法,那么创建接口的目的是什么? Plz帮助我,我是Java的新手?

4 个答案:

答案 0 :(得分:1)

考虑一个例子:

假设您正在创建一些与动物王国有关的应用程序。

现在要求你创建一只狗,猫,狮子等对象。

首先,你会想到,因为这些都属于动物王国,我可以创建一个名为'Animal'的基类,一切都将继承它。现在哟创造了这样的东西

class Animal {    
legs;    
family; 

eat();    
roam();  
sleep();     
makeNoise();    
}

因此,继承动物类的所有动物都具有这些特征。您可以将其称为“IS-A”关系。喜欢狗IS-A Animal。

现在假设您被要求将您的动物模拟程序用于某些科学展览会。您也可以使用此设计。

现在假设有人要求您在宠物店中使用您的模拟器。

因为你没有任何宠物行为。你所做的是在基类中添加宠物功能,并认为这样可行。

所以现在你的程序可以创建一个具有宠物行为的狮子。奇怪!!

现在您需要将所有宠物行为放在一个地方,并确保所有宠物动物都拥有它。

一种方法是创建另一个包含所有宠物特征的超类并扩展它。这是多重继承,JAVA不允许(只是谷歌致命的死亡钻石)。界面也来了。

接口更像是对象实现的一组行为。 由于每个对象都有自己的一组实现,所有这些方法都应该是抽象的 它为您提供多态的好处而没有致命的钻石死亡问题。它更像是一个契约,它定义了你的对象必须实现以下功能。

现在你可以做什么

interface PetBehavior{    
  befriend();    
  play();    
}  

来自不同继承树的类可以实现此接口。

答案 1 :(得分:0)

我们这样做是为了组织数据。这可以多次执行操作并构建数据。还有一种叫做Vector的东西。如果对象实现了相同的方法,则可以通过此Vector

对它们进行迭代和排序

答案 2 :(得分:0)

因为使用单个界面,您可以拥有多个实现。 例如,如果您有一个列表接口,则实现可以是ArrayList或LinkedList。 它们具有不同的性能并且基于上下文使用。通过拥有相同的界面,如果你想改变一些东西,你只需要改变这个

List<String> arrayList = new ArrayList<String>();

到这个

List<String> arrayList = new LinkedList<String>();

因为他们有相同的方法,但以不同的方式实施

答案 3 :(得分:0)

我以前也有这个问题!

我们需要接口有三个主要原因:

  • 更有意义。接口创建了“可以用作”或“具有”实现类和接口之间关系的能力。例如,您可以拥有一个名为Flyable的接口,所有可以飞行的东西都可以实现此接口。例如。鸟,飞机和气球。这些实现类“具有飞行能力”,因为它们都具有fly方法或接口中定义的任何方法。此外,如果一个方法需要一个Flyable对象,程序员可以用他/她的常识传入一只鸟,一架飞机等。但是,这仍然不太实际,就像你是否应该写{在新线上无所谓。

  • 它使您和使用您的API或库或其他任何创建者的其他程序员更容易创建自定义行为。 Java Swing就是一个很好的例子。如果您不知道swing是什么,它是一个用于创建具有“窗口”或GUI的程序的API。当用户点击按钮时,您如何告诉计算机该做什么?通过界面!有一个名为ActionListener的界面。它允许您在用户单击按钮时创建自己要做的事情。您只需将ActionListener对象传递给具有您自己的实现的方法,并在单击该按钮时运行它!如果我的话没有意义,让我用一句话来总结这一切。

      

    接口提供了一种方法,可以将不同的方法(使用自定义实现)作为方法中的参数传递。

修改

哦,我错过了一点!

  • 接口有助于多态性。假设你有一只狗,一只猫和一个鱼类,它们都没有实现任何接口,但有类似的方法(movesleepeat等)。如果要创建所有动物的数组,则只能创建Object数组,因为所有Java类都继承Object。这是不安全的,因为那样你可以在数组中添加你想要的任何东西,并且你需要进行强制转换才能使用那些移动睡眠吃方法。好难过! :(如果你创建一个名为Animal的接口,它包含三个常用方法并让所有三个类实现它,你可以创建一个Animal数组。你甚至不需要转换它在你可以进入睡眠前吃到正确的类型!这有多酷!

所以请记住,当你的很多类都有类似的方法但不同的实现只是UNITE THEM ALL时创建接口!