Java中的接口和方法

Java中的接口和方法,java,methods,interface,polymorphism,Java,Methods,Interface,Polymorphism,对于Java!! 我们可以在不同的类中实现不同的方法。在接口中,我们创建一个抽象方法,并在实现特定接口的类中提供其实现。如果我们可以分别在类中创建和实现方法,那么创建接口的目的是什么? 请帮助我,我是Java新手?我们这样做是为了组织数据。这使您能够多次执行操作并组织数据。还有一种东西叫做向量。如果对象实现相同的方法,则可以通过该方法对它们进行迭代和排序,因为使用单个接口可以有多个实现。 例如,如果您有一个列表接口,那么实现可以是ArrayList或LinkedList。 它们具有不同的性能,并

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

我们这样做是为了组织数据。这使您能够多次执行操作并组织数据。还有一种东西叫做向量。如果对象实现相同的方法,则可以通过该方法对它们进行迭代和排序,因为使用单个接口可以有多个实现。 例如,如果您有一个列表接口,那么实现可以是ArrayList或LinkedList。 它们具有不同的性能,并且根据上下文使用。通过使用相同的接口,如果您想更改某些内容,您只需从这个界面进行更改

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

List<String> arrayList = new LinkedList<String>();
List arrayList=new LinkedList();
因为它们有相同的方法,但以不同的方式实现

考虑一个例子:

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

现在要求您创建狗、猫、狮子等对象

所以首先你们会想到,因为这些都属于动物王国,我可以创建一个名为“animal”的基类,所有东西都会继承它。现在你创造了这样的东西

class Animal {    
legs;    
family; 

eat();    
roam();  
sleep();     
makeNoise();    
}
因此,所有继承动物类的动物都将具有这些特征。你可以称之为“是一种”关系。就像狗是动物一样

现在假设你被要求使用你的动物模拟程序参加一些科学展览。你也可以用这种设计

现在假设有人让你在宠物店使用模拟器

因为你没有任何宠物行为。您所做的是在基类中添加宠物特性,并认为这会起作用

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

现在你需要把所有的宠物行为放在一个地方,并确保所有的宠物都拥有它

一种方法是创建另一个具有所有pet特性的超类并对其进行扩展。这是多重继承,JAVA不允许(只是谷歌致命的死亡钻石)。界面也是如此

接口更像是对象实现的一组行为。 因为每个对象都可以有自己的实现集,所以所有这些方法都应该是抽象的。
它给你多态的好处,没有致命的死亡钻石问题。这更像是一个契约,它定义了对象必须实现以下特性

那么现在你能做什么呢

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

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

我以前也有这个问题

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

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

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

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

编辑

哦,我错过了一分

  • 接口有助于多态性。假设您有一只狗、一只猫和一个鱼类,它们都没有实现任何接口,但都有类似的方法(
    move
    sleep
    eat
    等)。如果你想创建一个包含所有动物的数组,你只能创建一个包含
    Object
    的数组,因为所有Java类都继承了
    Object
    。这是不安全的,因为这样你就可以在数组中添加任何你想要的内容,并且你需要进行强制转换才能使用那些move-sleep-eat方法。真可悲!:(如果您创建一个名为
    Animal
    的接口,其中包含三个常用方法,并让所有三个类都实现它,那么您只需创建一个
    Animal
    数组即可。在访问move sleep eat之前,您甚至无需将其转换为正确的类型!这多酷啊

所以记住,当你的很多类都有相似的方法但实现不同时,要创建接口,把它们统一起来!

许多类(Vector、ArrayList、LinkedList)都实现了相同的接口列表。你应该读一本好的Java书或教程。Google有数千页解释接口。