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语法是如何工作的?
答案 0 :(得分:0)
关于界面只有一条主要规则:您无法使用 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
的类。
答案 1 :(得分:0)
接口,因为单词表示语言或现实世界的上下文是否是实现抽象的一种方式。
我建议您只使用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将为接口中定义的行为定义实时实体或对象。
因此,当您尝试“实例化一个接口”时,编译器会显示错误消息,表明它无法实例化给定类型,因为它是一个接口。
是的,您可以创建可以指向实现类对象的接口引用变量。