ИНТЕРФЕЙС АТМ
Код: Выделить всё
package interfaceconcept;
public interface ATM {
void withdraw();
void checkBalance();
void pinGenerate();
}
Код: Выделить всё
package interfaceconcept;
package interfaceconcept;
public class Bank {
private class SBI implements ATM {
public void withdraw() {
System.out.println("Amount withdrawn successfully!!");
}
public void checkBalance() {
System.out.println("Balance available!!");
}
public void pinGenerate() {
System.out.println("PIN generated!!");
}
}
public ATM atm() {
return new SBI();
}
}
Код: Выделить всё
package interfaceconcept;
public class User {
public static void main(String[] args) {
Bank bank = new Bank();
ATM atm = bank.atm();
atm.checkBalance();
atm.withdraw();
atm.pinGenerate();
// Accessing Object class methods through atm reference
System.out.println(atm.toString()); /*How can we access Object class methods through ATM interface reference variable? */
System.out.println(atm.equals(atm)); /* How can we access Object class methods through ATM interface reference variable? */
}
}
По сути, всякий раз, когда мы создаем интерфейс в Java, он не наследует никаких методов из класса Object, но когда мы создаем абстрактный класс, он наследует 11 нестатических методов из класса Object, эта природа не отображается в интерфейсе. Вот почему мы используем интерфейс для достижения 100% абстракции
Теперь я не могу понять, почему мы получаем доступ к членам класса Object с помощью преобразованной ссылочной переменной класса ATM, потому что компилятор проверит синтаксис и семантику во-первых, и в соответствии с этим мы можем получить доступ только к суперклассу и супербольшинству членов класса с помощью преобразованной ссылочной переменной, но в этом случае интерфейс не наследует 11 нестатических методов, почему мы можем получить доступ к методам объекта class
Возможно, я где-то ошибаюсь в понимании этой концепции, но я объяснил все, что знал, пожалуйста, дайте мне подробный ответ, чтобы я мог лучше понять
Заранее спасибо.
Подробнее здесь: https://stackoverflow.com/questions/792 ... eference-v