2017-01-27 8 views
-3
connection con = DriverManager getconnection(URL,user,pwd); 

Как это возможно? Здесь соединение является интерфейсом,создание объекта интерфейса и назначение этого статического метода объекта?

Как мы можем создать объект интерфейса?

, а затем после того, как мы назначаем объект соединения класса StartManager класса DriverManager. как все это работает? немного запутать

если приведенный выше код можно затем должно работать, но он показывает мне ошибку

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

Возможно, вам стоит начать с [Что такое интерфейс?] (Https://docs.oracle.com/javase/tutorial/java/concepts/interface.html) и [Интерфейсы] (https://docs.oracle.com /javase/tutorial/java/IandI/createinterface.html). Интерфейсы являются краеугольным камнем полиморфизма, и вы должны потратить время, чтобы узнать больше о них. – MadProgrammer

+0

Интерфейс - это контракт, в котором говорится, что любой данный инструмент может реализовать или предоставить, это означает, что вам никогда не нужно заботиться о том, «как» интерфейс физически реализовано, что он «делает» соблюдать указанный контракт интерфейса – MadProgrammer

ответ

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 ,

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 будут определять объекты или объекты реального времени для поведения, определенного в интерфейсе.

Итак, пока вы пытаетесь «создать экземпляр интерфейса», компилятор показывает вам сообщение об ошибке, что он не может создать экземпляр заданного типа, поскольку он является интерфейсом.

Да, вы можете создать ссылочные переменные интерфейса, которые могут указывать на объекты реализующих классов.

 Смежные вопросы

  • Нет связанных вопросов^_^