super ключевое слово и разбор

133
05 января 2020, 08:50

Из всего кода совсем не понимаю как отрабатывает ключевое слово super. Во всех моментах этого кода, помогите разобраться пожалуйста!

 public abstract class AbstractPhone {
    int year;
    public AbstractPhone(int year){
        this.year = year;
    }
    public abstract void call(int outputNumber);
    public abstract void ring(int inputNumber);
}
public class User {
    private String name;
    public User(String name) {
        this.name = name;
            }
    public void callAnotherUser(int number, AbstractPhone phone){
// вот он полиморфизм - использование в коде абстактного типа AbstractPhone phone!
        phone.call(number);
    }
  }
 }

public class ThomasEdisonPhone extends AbstractPhone {
public ThomasEdisonPhone(int year) {
    super(year);
}
    @Override
    public void call(int outputNumber) {
        System.out.println("Вращайте ручку");
        System.out.println("Сообщите номер абонента, сэр");
    }
    @Override
    public void ring(int inputNumber) {
        System.out.println("Телефон звонит");
    }
}


public class Phone extends AbstractPhone {
    public Phone(int year) {
        super(year);
    }
    @Override
    public void call(int outputNumber) {
        System.out.println("Вызываю номер" + outputNumber);
    }
    @Override
    public void ring(int inputNumber) {
        System.out.println("Телефон звонит");
    }
}

public class VideoPhone extends AbstractPhone {
    public VideoPhone(int year) {
        super(year);
    }
    @Override
    public void call(int outputNumber) {
        System.out.println("Подключаю видеоканал для абонента " + outputNumber );
    }
    @Override
    public void ring(int inputNumber) {
        System.out.println("У вас входящий видеовызов..." + inputNumber);
    }
  }

AbstractPhone firstPhone = new ThomasEdisonPhone(1879);
AbstractPhone phone = new Phone(1984);
AbstractPhone videoPhone=new VideoPhone(2018);
User user = new User("Андрей");
user.callAnotherUser(224466,firstPhone);
// Вращайте ручку
//Сообщите номер абонента, сэр
user.callAnotherUser(224466,phone);
//Вызываю номер 224466
user.callAnotherUser(224466,videoPhone);
//Подключаю видеоканал для абонента 224466
Answer 1

Только почитайте базовую литературу, а то туго придётся потом

class test{ 
public static void main(String[] args){ 
 
AbstractPhone firstPhone = new ThomasEdisonPhone(1879); 
AbstractPhone phone = new Phone(1984); 
AbstractPhone videoPhone=new VideoPhone(2018); 
User user = new User("Андрей"); 
user.callAnotherUser(224466,firstPhone); 
// Вращайте ручку 
//Сообщите номер абонента, сэр 
user.callAnotherUser(224466,phone); 
//Вызываю номер 224466 
user.callAnotherUser(224466,videoPhone); 
 
} 
} 
 
 
 
 class VideoPhone extends AbstractPhone { 
 
    public VideoPhone(int year) { 
        super(year); 
    } 
    @Override 
    public void call(int outputNumber) { 
        System.out.println("Подключаю видеоканал для абонента " + outputNumber ); 
    } 
    @Override 
    public void ring(int inputNumber) { 
        System.out.println("У вас входящий видеовызов..." + inputNumber); 
    } 
  } 
   
   
   
 class Phone extends AbstractPhone { 
 
    public Phone(int year) { 
        super(year); 
    } 
 
    @Override 
    public void call(int outputNumber) { 
        System.out.println("Вызываю номер" + outputNumber); 
    } 
 
    @Override 
    public void ring(int inputNumber) { 
        System.out.println("Телефон звонит"); 
    } 
} 
 
 
 class ThomasEdisonPhone extends AbstractPhone { 
 
public ThomasEdisonPhone(int year) { 
    super(year); 
} 
    @Override 
    public void call(int outputNumber) { 
        System.out.println("Вращайте ручку"); 
        System.out.println("Сообщите номер абонента, сэр"); 
    } 
 
    @Override 
    public void ring(int inputNumber) { 
        System.out.println("Телефон звонит"); 
    } 
} 
 
 
 
 class User { 
    private String name; 
 
    public User(String name) { 
        this.name = name; 
            } 
 
    public void callAnotherUser(int number, AbstractPhone phone){ 
// вот он полиморфизм - использование в коде абстактного типа AbstractPhone phone! 
        phone.call(number); 
    } 
  }; 
  
 
 
abstract class AbstractPhone { 
    int year; 
 
    protected AbstractPhone(int year){this.year = year;};  
    public abstract void call(int outputNumber); 
 
    public abstract void ring(int inputNumber); 
 
}

READ ALSO
Отрисовка градиентов

Отрисовка градиентов

Возможно ли реализовать градиент на элементе подобного вида

134
Как на css написать горбик?

Как на css написать горбик?

Есть блок, хочу сделать плавный переход на белый цвет1 вариант - svg - не шарю, и не хочу кешировать, с png такая же история

149
Google maps Установка только одного маркера

Google maps Установка только одного маркера

Прошу помощи так как абсолютно не понимаю в javascript

119
fusionchart + vue через json

fusionchart + vue через json

Здравствуйте юзаю fusionchart + vue для всяких диаграмм, возникла проблема при выводе данных через jsonформаты данных разные, но вывод данных со своей...

151