Java 接口完整参考
我正在浏览完整参考中定义的接口。我只是想了解下一段提到的内容 接口设计用于在运行时支持动态方法解析。 通常,为了将方法从一个类调用到另一个类,两个类 需要在编译时出现,以便Java编译器可以检查以确保 方法签名是兼容的。这一要求本身就构成了一个静态和动态的过程 非扩展分类环境。在这样的系统中,功能不可避免地会受到影响 在类层次结构中向上推,使机制 可用于越来越多的子类。接口的设计就是为了避免这个问题。 它们将方法或方法集的定义与继承断开 等级制度由于接口与类位于不同的层次结构中,因此 在要实现的类层次结构方面不相关的类Java 接口完整参考,java,interface,Java,Interface,我正在浏览完整参考中定义的接口。我只是想了解下一段提到的内容 接口设计用于在运行时支持动态方法解析。 通常,为了将方法从一个类调用到另一个类,两个类 需要在编译时出现,以便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提供接口,但不同的数据库供应商提供驱动程序类实现。因此,为了让您调用特定数据库供应商的方法来访问数据库。您需要知道要遵守的方法签名或契约,但底层实现来自单独的类。感谢您的回复。是的,现在说得通了。但是当作者提到功能越来越高时,他想表达什么呢?谢谢你的回复。是的,现在说得通了。但是当作者提到功能越来越高时,他想表达什么呢?。。