繁体   English   中英

创建接口对象并分配该对象静态方法?

[英]creating interface object and assigning that object static method?

connection con = DriverManager getconnection(URL,user,pwd);

这怎么可能 ? 这里连接是接口,

我们如何创建接口对象?

然后在我们分配连接的对象 DriverManager 类的静态方法 getconnection 之后。 这一切如何运作? 有点迷惑

如果上面的代码是可能的,那么下面应该可以工作,但它显示我错误

interface h
{
public int r=7;
public void set(int u);
}

class A implements h
{
public static int t=6;
int y=6;

public static void get()
{
    System.out.println(t*8);
}

public void set(int u)
{
    System.out.println(y*u);    
}   
}

class S_tatic
{
public static void main(String arg[])
{

    h l= new h();                      // it shows me error

    h l = A.get();                    //if this can be done then what's                                                                                                                                                                                                                   

                                     //meaning of static ?
}
}

现在为什么我不能在这里创建接口的对象?

并说一旦我们创建了接口对象,那么我们如何将对象分配给任何方法

我认为我们应该按照以下方式进行,

l.set(); // 在非静态方法的情况下

A.get(); // 如果是静态方法

如果这是真的,那么我在这里包含的第一个 jdbc 语法是如何工作的?

关于接口只有一个主要规则:你不能用new InterfaceName()初始化它们

现在,这段代码是否违反了该规则? (为了好看我改了)

Connection con = DriverManager.getconnection(URL,user,pwd);

你甚至能在那里找到new这个词吗? 不! 这意味着它没有违反规则,所以它编译。

让我们看看你的代码:

public static void main(String arg[])
{

    h l= new h();

    h l = A.get();
}

看看main的第一行, new h() 你违反了规则! 因此,它不编译。 (第二行也无法编译,因为get返回void btw)

实际上,在DriverManager.getConnection方法中,它可能包含一些这样的代码:

Connection con = new XXXConnection();

其中XXXConnection是一个实现Connection的类。

接口,顾名思义,无论是在语言语境还是现实世界中,都是实现抽象的一种方式。

我建议您只浏览一次 Java 参考中的接口概念: https : //docs.oracle.com/javase/tutorial/java/concepts/interface.html

来自参考:在最常见的形式中,接口是一组具有空体的相关方法。 如果指定为接口,自行车的行为可能如下所示:

interface Bicycle {

    //  wheel revolutions per minute
    void changeCadence(int newValue);

    void changeGear(int newValue);

    void speedUp(int increment);

    void applyBrakes(int decrement);
}

简而言之,如果您说我们通过接口指定自行车做什么。 但是,例如 RangerBicycle 或 MountainBicycle 的实现类将为接口中定义的行为定义实时实体或对象。

因此,当您尝试“实例化一个接口”时,编译器会向您显示错误消息,指出它无法实例化给定类型,因为它是一个接口。

是的,您可以创建可以指向实现类的对象的接口引用变量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM