Java 接口完整参考

Java 接口完整参考,java,interface,Java,Interface,我正在浏览完整参考中定义的接口。我只是想了解下一段提到的内容 接口设计用于在运行时支持动态方法解析。 通常,为了将方法从一个类调用到另一个类,两个类 需要在编译时出现,以便Java编译器可以检查以确保 方法签名是兼容的。这一要求本身就构成了一个静态和动态的过程 非扩展分类环境。在这样的系统中,功能不可避免地会受到影响 在类层次结构中向上推,使机制 可用于越来越多的子类。接口的设计就是为了避免这个问题。 它们将方法或方法集的定义与继承断开 等级制度由于接口与类位于不同的层次结构中,因此 在要实现的

我正在浏览完整参考中定义的接口。我只是想了解下一段提到的内容

接口设计用于在运行时支持动态方法解析。 通常,为了将方法从一个类调用到另一个类,两个类 需要在编译时出现,以便Java编译器可以检查以确保 方法签名是兼容的。这一要求本身就构成了一个静态和动态的过程 非扩展分类环境。在这样的系统中,功能不可避免地会受到影响 在类层次结构中向上推,使机制 可用于越来越多的子类。接口的设计就是为了避免这个问题。 它们将方法或方法集的定义与继承断开 等级制度由于接口与类位于不同的层次结构中,因此 在要实现的类层次结构方面不相关的类


那么,作者所说的,为了从一个类调用一个方法到另一个类,通常意味着什么呢?。请输入您的视图。

这意味着如果您不使用接口,并且尝试执行以下操作:

someObject.doSomething();
。。。换句话说,调用其他类上的方法时,该类必须在编译时对您可用,否则编译器将不知道如何编译对doSomething方法的方法调用


另一方面,如果您只知道某个对象实现了一个接口,该接口上有一个doSomething方法,那么编译器只需要该接口就可以完成它的工作。然后,其他人可以调用您编译的代码,传入在编译时不可用的包中的某个对象,只要它实现了您的接口。

这意味着如果您不使用接口,并且尝试执行以下操作:

someObject.doSomething();
。。。换句话说,调用其他类上的方法时,该类必须在编译时对您可用,否则编译器将不知道如何编译对doSomething方法的方法调用

另一方面,如果您只知道某个对象实现了一个接口,该接口上有一个doSomething方法,那么编译器只需要该接口就可以完成它的工作。然后其他人可以调用您编译的代码,传入在编译时不可用的包中的某个对象,只要它实现了您的接口。

Pavan

通常,为了将一个方法从一个类调用到另一个类,所有这些都意味着正常的方法调用,例如:

Foo foo = new Foo();
foo.bar();  <<== method invocation
当我们把一个骨灰级的赞助人踢出去的时候:

class Patron {
    void kickOut() {
        // ServiceLocator finds a class which implements the Barable interface.
        Barable service = ServiceLocator.ByInterface("Barable"); 
        service.bar(); <<-- Invoke it. We don't care HOW it works, or WHO implemented it!
    }
}
帕万

通常,为了将一个方法从一个类调用到另一个类,所有这些都意味着正常的方法调用,例如:

Foo foo = new Foo();
foo.bar();  <<== method invocation
当我们把一个骨灰级的赞助人踢出去的时候:

class Patron {
    void kickOut() {
        // ServiceLocator finds a class which implements the Barable interface.
        Barable service = ServiceLocator.ByInterface("Barable"); 
        service.bar(); <<-- Invoke it. We don't care HOW it works, or WHO implemented it!
    }
}

一个接口仅仅意味着,一种访问某物的方式

类必须实现接口并提供实现

public interface Account{

openAccount();

deleteAccount();

}

public class AccountImpl implements Account{

 public void openAccount(){
  // create an account here
 }

 public void deleteAccount(){
  // create an account here
 }

}
另一方面,您还可以:-

public class AccountImpl{
     public void openAccount(){
      // create an account here
     }

     public void deleteAccount(){
      // create an account here
     }
} 
并不是每个类都需要一个接口来提供实现

public interface Account{

openAccount();

deleteAccount();

}

public class AccountImpl implements Account{

 public void openAccount(){
  // create an account here
 }

 public void deleteAccount(){
  // create an account here
 }

}

例如,在JDBC世界中,oracle提供接口,但不同的数据库供应商提供驱动程序类实现。因此,为了让您调用特定数据库供应商的方法来访问数据库。您需要知道要遵守的方法签名或契约,但底层实现来自一个单独的类。

接口只是指访问某个对象的方式

类必须实现接口并提供实现

public interface Account{

openAccount();

deleteAccount();

}

public class AccountImpl implements Account{

 public void openAccount(){
  // create an account here
 }

 public void deleteAccount(){
  // create an account here
 }

}
另一方面,您还可以:-

public class AccountImpl{
     public void openAccount(){
      // create an account here
     }

     public void deleteAccount(){
      // create an account here
     }
} 
并不是每个类都需要一个接口来提供实现

public interface Account{

openAccount();

deleteAccount();

}

public class AccountImpl implements Account{

 public void openAccount(){
  // create an account here
 }

 public void deleteAccount(){
  // create an account here
 }

}

例如,在JDBC世界中,oracle提供接口,但不同的数据库供应商提供驱动程序类实现。因此,为了让您调用特定数据库供应商的方法来访问数据库。您需要知道要遵守的方法签名或契约,但底层实现来自单独的类。

感谢您的回复。是的,现在说得通了。但是当作者提到功能越来越高时,他想表达什么呢?谢谢你的回复。是的,现在说得通了。但是当作者提到功能越来越高时,他想表达什么呢?。。