/ / преоценка на метода чрез интерфейс - java

метод с приоритет чрез интерфейс - java

    interface I
{
void show();
}

class A implements I
{
void show()
{
System.out.println("class A");
}
public static void main(String s[])
{
I i=new A();
i.show();
i.toString();
}
}

Q> Като интерфейс I не съдържа абстрактния метод toString (), но все пак Следният код се компилира. Как?

когато променлива супер клас се използва за позоваване на подклас клас тогава компилаторът първо търси подобен метод в супер клас, ако не се намери, дава грешка. тук Интерфейсът не съдържа метода toString ().

ех =>

class A
{
void show()
{
System.out.println("show");
}
}

class B
{
void show()
{
System.out.println("show B");
}

void display()
{
System.out.println("display B");
}

public static void main(String s[])
{
A a=new B();
a.show();           //will execute
a.display();        //give error
}

Отговори:

7 за отговор № 1

Всички класове наследяват от Object. Обектът има toString.

За да използвате всеки интерфейс, той трябва да бъде подкрепен от действителен клас. Така че компилаторът на Java знае, че може да използва всеки метод, дефиниран в java.lang.Object, когато се занимава с интерфейс.

Да го кажа малко по-различен начин:

interface I { ... }

има "магия"

interface I extends Object { ... }

Така че можете да използвате методите на обектите, когато сте подробно с I. Не можете обаче да използвате никакви методи в конкретния клас, които не се появяват в интерфейса. За да комбинирате два примера:

interface Car {
void drive();
}

class Convertible implements Car {
void drive() {}
void openRoof() {}

public static void main() {
Car porscheBoxster = new Convertible();
porscheBoxster.drive(); // OK - exists in interface
porscheBoxster.toString(); // OK - exists in java.lang.Object.
porscheBoxster.openRoof(); // Error. All we know is the porscheBoxster is of type Car.
// We don"t know if it is a Convertible or not.
}
}

3 за отговор № 2

Всеки клас в Java е един обект, по този начин те винаги могат да изпълняват следните методи:

  • клонинг ()
  • се равнява на (Object)
  • финализира ()
  • getClass ()
  • хеш код()
  • уведомява ()
  • notifyAll ()
  • ToString ()
  • изчакайте()
  • чакам (дълга)
  • чака (дълго, int)

2 за отговор № 3

Тъй като "toString ()" е в класния обект, от който произтичат всички непримитивни данни. Така че всеки обект има този метод.


1 за отговор № 4

В Java, всеки клас, който изграждате, наследява от базовия клас Object. Това означава, че по подразбиране вашият клас ще има много полезни методи, сред които String ().