Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.97/29: Рейтинг темы: голосов - 29, средняя оценка - 4.97
30 / 11 / 5
Регистрация: 01.03.2014
Сообщений: 379
1

Переопределение equals

14.01.2016, 15:21. Показов 5286. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день, товарищи.

Пытаюсь переопределить метод "equals" во вновь созданном классе.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
package i1;
import java.util.Objects;
 
// Класс автомобиль
public class Car {
//Поле "макра автомобиля"   
private String Marka = "Марка авто не задана";      
private String Motion = "Автомобиль не двигается"; 
private String Fuel = "Топливо на исходе";
 
//Перезагрузка конструктора
Car(String name,String name1, String name2) 
    {                       
     this.Marka = name;
     this.Motion = name1;
     this.Fuel = name2;
    }
 
....
    //Переопределение метода equals()
    @Override
    public boolean equals(Object obj) 
        {
        
        if (obj == null) 
            {
            return false;
            }
        
        if (getClass() != obj.getClass()) 
        {
            return false;
        }
        
        final Car other = (Car) obj;
        if (!Objects.equals(this.Marka, other.Marka)) 
            {
            return false;
            }      
        return true;       
        }
}
Если переопределять таким образом, то не учитываются поля:
private String Motion и private String Fuel.

Как можно исправить метод equals()?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.01.2016, 15:21
Ответы с готовыми решениями:

Переопределение метода equals
В Хорстмане приводится следующий код, как пример переопределения метода equals(): public class...

Переопределение метода equals
При проверки выскакивает исключение Exception in thread "main" java.lang.NullPointerException....

Переопределение equals, сравнение по id
Хочу переопределить метод equals для класса Student. У него есть поле id. и я хочу, чтобы...

HashCode и equals (переопределение)
Здравствуйте, у меня возникла сложность с нashCode и equals....

16
65 / 64 / 15
Регистрация: 15.12.2013
Сообщений: 166
14.01.2016, 15:31 2
holod2014, кто мешает повтыкать еще условий?

Java
1
2
3
4
if (!Objects.equals(this.Motion, other.Motion)) 
            {
            return false;
            }
и тп.
0
0 / 0 / 0
Регистрация: 14.01.2016
Сообщений: 1
14.01.2016, 15:37 3
Java
1
2
3
4
5
6
7
8
9
10
11
@Override
    public boolean equals(Object obj) {
        if (this == obj) return true;
        if (obj == null || getClass() != obj.getClass()) return false;
 
        Car car = (Car) obj;
 
        if (Marka != null ? !Marka.equals(car.Marka) : car.Marka != null) return false;
        if (Motion != null ? !Motion.equals(car.Motion) : car.Motion != null) return false;
        return !(Fuel != null ? !Fuel.equals(car.Fuel) : car.Fuel != null);
    }
0
Pablito
14.01.2016, 15:42
  #4

Не по теме:

ну тогда уже первой проверкой на null, а остальные !=null убрать ) логично?

0
30 / 11 / 5
Регистрация: 01.03.2014
Сообщений: 379
14.01.2016, 16:26  [ТС] 5
Эрнесто, когда добавляю условия, то
Java
1
2
3
       Car cr = new Car("Reno", "Автомобиль стоит", "Топливо на исходе");                                    
       Car cr1 = new Car("Reno", "Автомобиль стоит", "Топливо на исходе"); 
       System.out.println(cr.equals(cr1));
FALSE
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
14.01.2016, 17:16 6
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
class Car {
    private String trademark;
    private String fueltype;
    
    public Car(String _trademark, String _fueltype) {
        trademark = _trademark;
        fueltype = _fueltype;
    }
    
    @Override
    public boolean equals(Object another) {
        if ( another instanceof Car ) 
            return ( trademark.equals(((Car)another).trademark) && fueltype.equals(((Car)another).fueltype) );
        else
            return super.equals(another);
    }
}
 
public class TwoCars {
    
    public static void main (String args[]) {
        Car first = new Car("Porshe", "Kerosene");
        Car second = new Car("Porshe", "Kerosene");
        
        System.out.println(first.equals(second));
        System.out.println(second.equals(null));
    }
}
1
30 / 11 / 5
Регистрация: 01.03.2014
Сообщений: 379
14.01.2016, 18:01  [ТС] 7
easybudda, Толь лыжи не едут, толь я не догоняю
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
package i1;
 
public class Main 
{
   public static void main(String[] args) 
   {
        
       //Создание объекта класса автомобиль
       Car cr = new Car("Reno", "Автомобиль стоит", "Топливо на исходе");                                    
       Car cr1 = new Car("Reno", "Автомобиль стоит", "Топливо на исходе"); 
              
        System.out.println(cr.equals(cr1));
   }
}
 
package i1;
import java.util.Objects;
 
// Класс автомобиль
public class Car {
    
//Поле "макра автомобиля"   
private String Marka = "Марка авто не задана";      
private String Motion = "Автомобиль не двигается"; 
private String Fuel = "Топливо на исходе";
 
// Создание объекта класса Wheel(колесо)
public Wheel wl = new Wheel(); 
public Wheel wl1 = new Wheel(); 
 
//Перезагрузка конструктора
Car(String name,String name1, String name2) 
    {                       
     this.Marka = name;
     this.Motion = name1;
     this.Fuel = name2;
    }
 
//Задать марку автомобиля
public void setCname(String name)
    {      
      Marka = name;
    }
 
//Считать марку автомобиля
public String getCname()
    {               
     return Marka;
    }
 
    //Переопределение метода equals()
//    @Override
//    public boolean equals(Object obj) 
//        {
//        
//        if (obj == null) 
//            {
//            return false;
//            }
//        
//        if (getClass() != obj.getClass()) 
//        {
//            return false;
//        }
//        
//        final Car other = (Car) obj;
//        if (!Objects.equals(this.Marka, other.Marka)) 
//            {
//            return false;
//            }
//      
//        return true;       
//        }
 
 
        @Override
        public boolean equals(Object another) {
        if ( another instanceof Car ) 
            return ( Marka.equals(((Car)another).Marka) && Motion.equals(((Car)another).Motion) );
        else
            return super.equals(another);
    }
 
  
    //Переопределение метода hashCode()
    @Override
    public int hashCode() 
    {
        int hash=7;
        hash = 89 * hash + Objects.hashCode(this.Marka);
        hash = 89 * hash + Objects.hashCode(this.Motion);
        hash = 89 * hash + Objects.hashCode(this.Fuel);
        return hash;
    }
 
    //Переопределение метода toString()
    @Override
    public String toString() 
    {
        return "Car{" + "Marka=" + Marka+" " + "Ехать=" + Motion + " " + "Заправлять=" + Fuel +  '}';
    } 
}
Добавлено через 32 минуты
могу сбросить весь проект, если что-то в коде не ясно
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
14.01.2016, 18:13 8
Цитата Сообщение от holod2014 Посмотреть сообщение
могу сбросить весь проект, если что-то в коде не ясно
Начните с полного описания задачи - так лучше будет...
1
944 / 687 / 230
Регистрация: 28.04.2013
Сообщений: 1,926
14.01.2016, 18:18 9
holod2014, а что вам не нравится?

easybudda, а если так?

Java
1
2
3
4
5
6
 public static void main (String args[]) {
        Car first = new Car("Porshe", null);
        Car second = new Car("Porshe", null);
        
        System.out.println(first.equals(second));
    }
1
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
14.01.2016, 18:26 10
reisal78, а нефига поля класса неинициализированными оставлять!
Цитата Сообщение от holod2014 Посмотреть сообщение
Java
1
2
3
private String Marka = "Марка авто не задана"; 
private String Motion = "Автомобиль не двигается"; 
private String Fuel = "Топливо на исходе";
есть же значения по умолчанию. По хорошему в конструкторе проверять null там или строка какая-то...
1
30 / 11 / 5
Регистрация: 01.03.2014
Сообщений: 379
14.01.2016, 18:28  [ТС] 11
Задание:
Создать приложение, удовлетворяющее требованиям, приведенным ниже. Корректно переопределить для каждого класса методы equals(), hashCode(), toString().
Создать объект класса Автомобиль, используя класс Колесо.
Методы: ехать, заправляться, менять колесо, вывести на консоль марку автомобиля.
Реализация:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
package i1;
 
public class Main 
{
    
   public static void main(String[] args) 
   {
        
       //Создание объекта класса автомобиль
       Car cr = new Car("Reno", "Автомобиль стоит", "Топливо на исходе");                                    
       Car cr1 = new Car("Reno", "Автомобиль стоит", "Топливо на исходе"); 
       
       //Вывод марки автомобиля
       System.out.println("Марка автомобиля: "+cr.getCname());
       
       System.out.println(cr.equals(cr1));
   }
}
package i1;
import java.util.Objects;
// Класс автомобиль
public class Car {
    
//Поле "макра автомобиля"   
private String Marka = "Марка авто не задана";      
private String Motion = "Автомобиль не двигается"; 
private String Fuel = "Топливо на исходе";
// Создание объекта класса Wheel(колесо)
public Wheel wl = new Wheel(); 
 
//Перезагрузка конструктора
Car(String name,String name1, String name2) 
    {                       
     this.Marka = name;
     this.Motion = name1;
     this.Fuel = name2;
    }
 
//Задать марку автомобиля
public void setCname(String name)
    {      
      Marka = name;
    }
 
//Считать марку автомобиля
public String getCname()
    {               
     return Marka;
    }
    
// Метод "Ехать"
public String go()   
    {
        return Car.this.Motion="Автомобиль едет!";
    }
 
// Метод "Стоп"
public String stop()   
    {
        return Car.this.Motion="Автомобиль стоит!";
    }
 
// Метод "Заправлять"
public String fill()   
    {
        return Car.this.Fuel="Автомобиль заправлен!";
    }
 
// Метод "Заправлять"
public String empty()   
    {
        return Car.this.Fuel="Бак автомобиля пуст!";
    }
 
    //Переопределение метода equals()
//    @Override
//    public boolean equals(Object obj) 
//        {
//        
//        if (obj == null) 
//            {
//            return false;
//            }
//        
//        if (getClass() != obj.getClass()) 
//        {
//            return false;
//        }
//        
//        final Car other = (Car) obj;
//        if (!Objects.equals(this.Marka, other.Marka)) 
//            {
//            return false;
//            }
//      
//        return true;       
//        }
 
 
        @Override
        public boolean equals(Object another) {
        if ( another instanceof Car ) 
            return ( Marka.equals(((Car)another).Marka) && Motion.equals(((Car)another).Motion) );
        else
            return super.equals(another);
    }
 
  
//    //Переопределение метода hashCode()
//    @Override
//    public int hashCode() 
//    {
//        int hash=7;
//        hash = 89 * hash + Objects.hashCode(this.Marka);
//        hash = 89 * hash + Objects.hashCode(this.Motion);
//        hash = 89 * hash + Objects.hashCode(this.Fuel);
//        return hash;
//    }
 
    //Переопределение метода toString()
    @Override
    public String toString() 
    {
        return "Car{" + "Marka=" + Marka+" " + "Ехать=" + Motion + " " + "Заправлять=" + Fuel +  '}';
    } 
}
package i1;
import java.util.Objects;
// Класс колесо
public class Wheel {         
    
    // Поле
    public String  Status;                   
    
    // Метод "Менять колесо"
    public String zamena()   
    {
        return Wheel.this.Status="Произведена замена колеса!";
    }
 
    //Переопределение метода equals()
    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Wheel other = (Wheel) obj;
       
        if (!Objects.equals(this.Status, other.Status)) {
            return false;
        }
        return true;
    }
   
    //Переопределение метода hashCode()
    @Override
    public int hashCode() {
        int hash = 7;
        hash = 71 * hash + Objects.hashCode(this.Status);
        return hash;
    }
 
    //Переопределение метода toString()
    @Override
    public String toString() {
        return "Wheel{" + "Status=" + Status + '}';
    }
 
}
Вложения
Тип файла: rar i1.rar (25.7 Кб, 39 просмотров)
0
944 / 687 / 230
Регистрация: 28.04.2013
Сообщений: 1,926
14.01.2016, 18:34 12
easybudda,
А почему так не хотите сделать?
Java
1
return (Objects.equals(trademark, ((Car) another).trademark) && Objects.equals(fueltype, ((Car) another).fueltype));
Добавлено через 1 минуту
holod2014, код который вы указали в сообщении Переопределение equals выводит true. Что еще не так то? )
1
30 / 11 / 5
Регистрация: 01.03.2014
Сообщений: 379
14.01.2016, 18:39  [ТС] 13
Народ, не пинайте сильно. Что-то глюкануло меня. Код действительно рабочий!
Всем спасибо за помощь.
0
944 / 687 / 230
Регистрация: 28.04.2013
Сообщений: 1,926
14.01.2016, 18:44 14
Цитата Сообщение от holod2014 Посмотреть сообщение
Код действительно рабочий!
не совсем, да и в целом задание, на мой взгляд, выполнено не верно
0
30 / 11 / 5
Регистрация: 01.03.2014
Сообщений: 379
14.01.2016, 19:02  [ТС] 15
а где ошибки?
0
944 / 687 / 230
Регистрация: 28.04.2013
Сообщений: 1,926
14.01.2016, 22:16 16
Лучший ответ Сообщение было отмечено holod2014 как решение

Решение

holod2014, по методу equals - посмотрите наши сообщения с easybudda. В данном случае, ваш код работает, но в общих случаях могут вываливаться эксцепшены.

Ну и в целом это задача по ООП, а в вашем решении его нет =)

Из wiki: Основные преимущества ООП проявляются только в том случае, когда в языке программирования реализован полиморфизм подтипов — возможность единообразно обрабатывать объекты с различной реализацией при условии наличия общего интерфейса.
Теперь по русски:
Сегодня нас просят сделать автомобиль с колесами.
Создать объект класса Автомобиль, используя класс Колесо.
А завтра скажут - а давайте поставим его на гусеницы(оО).
Кликните здесь для просмотра всего текста
Переопределение equals

Если правильно использовать приемы ООП, то такая модернизация, не доставит нам особых проблем.

Колеса, гусеницы, ноги... Это часть чего то, участвующая в процессе перемещения. Что бы это процесс перемещения начался эта часть должна начать выполняться какое то действие (action).
Java
1
2
3
public interface Actionable {
    void action();
}
Теперь можно создать класс колесо реализующий этот интерфейс
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class Wheel implements Actionable {
 
    private String name;
    private int radius;
 
    public Wheel(String name, int radius) {
        this.name = name;
        this.radius = radius;
    }
 
 
    @Override
    public void action() {
        System.out.println("Колесо вращается");
    }
}
Отложим, на время наши колеса, и займемся автомобилями.

Сейчас от нас требуют создать автомобиль, завтра потребуют мотоцикл, а после завтра - трактор?
Опять попробуем выделить общее.

любое транспортное средство имеет название, вес, цвет и тд.
любое транспортное средство должно иметь как минимум одно устройство для перемещения (колесо, гусеница и тд.)
для перемещения должен быть двигатель
для работы двигателя нужна энергия
энергию надо где то хранить
(для последних 3х пунктов вспомнить о велосипедистах)

так как в задаче ничего не сказано о двигателе, а мне лень особо сильно заморачиваться, то оставим его реализацию на самостоятельную работу.
А вот для реализации метода "заправить" придется сделать хотя бы интерфейс хранилища топлива.
Любое хранилище можно заполнить. и получить из него, то что в нем хранится. (Топливный бак, аккумулятор и тд)
Java
1
2
3
4
public interface Filled {
    void fill();
    double getFuel();
}
реализуем абстрактный класс транспорт
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
public abstract class Transport {
    protected Actionable[] moveParts; 
    private Filled storage;
    
    protected void refill() {
        if (storage == null) {
            throw new RuntimeException("Отсутствует хранилище");
        }
        storage.fill();
    }
 
    public void addMoveParts(Actionable... part) {
        if (moveParts == null) {
            throw new RuntimeException("moveParts не должно быть null");
        }
        if (part.length != moveParts.length) {
            throw new RuntimeException("Неверное количество частей для движения");
        }
        for (int i = 0; i < moveParts.length; i++) {
            moveParts[i] = part[i];
        }
    }
 
    protected void changeMovePart(int numberPart, Actionable part) {
        moveParts[numberPart] = part;
    }
    
    protected void drive(){
        for (Actionable part : moveParts) {
            if (part == null) {
                throw new RuntimeException("Отсутсвуют части необходимые для движения");
            }
        }
        if (storage == null) {
            throw new RuntimeException("Отсутствует хранилище");
        }
        if (storage.getFuel() <= 0) {
            System.out.println("Закончилось топливо");
        }
        for (Actionable part: moveParts) {
            part.action();
        }
    }
 
    public Actionable[] getMoveParts() {
        return moveParts;
    }
 
    public void setMoveParts(Actionable[] moveParts) {
        this.moveParts = moveParts;
    }
 
    public Filled getStorage() {
        return storage;
    }
 
    public void setStorage(Filled storage) {
        this.storage = storage;
    }
}
класс Car теперь совсем не большой

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class Car extends Transport {
    private String brand;
 
    public Car(String brand) {
        this.brand = brand;
        super.moveParts = new Actionable[4];
    }
 
    @Override
    public void drive() {
        super.drive();
        System.out.println("Автомобиль начал движение");
    }
 
    public void showBrand() {
        System.out.println(brand);
    }
}
теперь напишем основной метод
public static void main(String[] args) {
Java
1
2
3
4
5
6
7
8
9
10
        Car car = new Car("Lada");
        Wheel wheel1 = new Wheel("Снежинка", 14);
        Wheel wheel2 = new Wheel("Снежинка", 14);
        Wheel wheel3 = new Wheel("Снежинка", 14);
        Wheel wheel4 = new Wheel("Снежинка", 14);
 
        car.addMoveParts(wheel1, wheel2, wheel3, wheel4);
        car.showBrand();
        car.changeMovePart(1, new Wheel("Кама", 14));
    }
методы "поехать" и "заправиться" будут бросаться исключениями, т.к у нас еще не создан класс бензобак.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class FuelTank implements Filled {
 
    private final double MAX_VALUE = 40;
    private double currentValue = 0;
    
    @Override
    public void fill() {
        currentValue = MAX_VALUE;
    }
 
    @Override
    public double getFuel() {
        return currentValue--;
    }
}
Теперь все работает.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    public static void main(String[] args) {
        Car car = new Car("Lada");
        Wheel wheel1 = new Wheel("Снежинка", 14);
        Wheel wheel2 = new Wheel("Снежинка", 14);
        Wheel wheel3 = new Wheel("Снежинка", 14);
        Wheel wheel4 = new Wheel("Снежинка", 14);
 
        car.addMoveParts(wheel1, wheel2, wheel3, wheel4);
        car.showBrand();
        car.changeMovePart(1, new Wheel("Кама", 14));
 
        car.setStorage(new FuelTank());
 
        car.refill();
        car.drive();
    }
Теперь поставим наш автомобиль на гусеницы.
нам нужно будет создать класс их описывающий.
Java
1
2
3
4
5
6
public class Сaterpillar implements Actionable{
    @Override
    public void action() {
        System.out.println("Гусеница пришла в движение");
    }
}
и установим их в наш автомобиль
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
    public static void main(String[] args) {
        Car car = new Car("Lada");
        Wheel wheel1 = new Wheel("Снежинка", 14);
        Wheel wheel2 = new Wheel("Снежинка", 14);
        Wheel wheel3 = new Wheel("Снежинка", 14);
        Wheel wheel4 = new Wheel("Снежинка", 14);
 
        car.addMoveParts(wheel1, wheel2, wheel3, wheel4);
        car.showBrand();
 
        Caterpillar caterpillar1 = new Caterpillar();
        Caterpillar caterpillar2 = new Caterpillar();
        Caterpillar caterpillar3 = new Caterpillar();
        Caterpillar caterpillar4 = new Caterpillar();
 
        car.changeMovePart(0, caterpillar1);
        car.changeMovePart(1, caterpillar2);
        car.changeMovePart(2, caterpillar3);
        car.changeMovePart(3, caterpillar4);
 
        car.setStorage(new FuelTank());
 
        car.refill();
        car.drive();
    }
В уже написанный код мы не вносили правок (не наделали новых ошибок), просто добавили новый класс.

Теперь потребовалось создать мотоцикл.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public class Motorcycle extends Transport {
 
    public Motorcycle() {
        super.moveParts = new Actionable[2];
    }
 
    @Override
    public void refill() {
        super.refill();
        System.out.println("Мото заправлен");
    }
 
    @Override
    public void addMoveParts(Actionable... part) {
        super.addMoveParts(part);
    }
 
    @Override
    public void changeMovePart(int numberPart, Actionable part) {
        super.changeMovePart(numberPart, part);
    }
 
    @Override
    public void drive() {
        super.drive();
        System.out.println("Мотоцикл поехал");
    }
}
И проверим
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
    public static void main(String[] args) {
        Car car = new Car("Lada");
        Wheel wheel1 = new Wheel("Снежинка", 14);
        Wheel wheel2 = new Wheel("Снежинка", 14);
        Wheel wheel3 = new Wheel("Снежинка", 14);
        Wheel wheel4 = new Wheel("Снежинка", 14);
 
        car.addMoveParts(wheel1, wheel2, wheel3, wheel4);
        car.showBrand();
 
        Caterpillar caterpillar1 = new Caterpillar();
        Caterpillar caterpillar2 = new Caterpillar();
        Caterpillar caterpillar3 = new Caterpillar();
        Caterpillar caterpillar4 = new Caterpillar();
 
        car.changeMovePart(0, caterpillar1);
        car.changeMovePart(1, caterpillar2);
        car.changeMovePart(2, caterpillar3);
        car.changeMovePart(3, caterpillar4);
 
        car.setStorage(new FuelTank());
 
        car.refill();
        car.drive();
 
        Motorcycle motorcycle = new Motorcycle();
        motorcycle.addMoveParts(wheel1, wheel2);
        motorcycle.setStorage(new FuelTank());
        motorcycle.refill();
        motorcycle.drive();
    }
Колеса поставили с автомобиля.. не пропадать же добру.
Тоже самое можно делать и с тракторами и с велосипедами.. да хоть с чертом в ступе =)
ну а дальше сами... мне лень стало )
10
30 / 11 / 5
Регистрация: 01.03.2014
Сообщений: 379
15.01.2016, 11:43  [ТС] 17
reisal78, прочитав данный пост действительно стало всё понятно.
Побольше бы таких статей в интернете, которые написаны не на академическом языке, а на понятном широкой массе.
Спасибо!!!
0
15.01.2016, 11:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.01.2016, 11:43
Помогаю со студенческими работами здесь

Переопределение equals() и hashCode()
Если есть класс Point: public class Point { private int x; private int y; ...

Переопределение методов equals() и hashCode()
Дорогие форумчане, подскажите пожалуйста, как мне переопределить эти методы для моего класса?...

Переопределение методов hashcode, compare, equals в коллекциях
Здравствуйте. Возникли несколько вопросов по коллекциям, буду рад если кто-то подскажет...

Переопределение equals в классах, содержащих объекты друг друга
Здравствуйте. Как переопределить equals в классах, которые содержат в своих атрибутах объекты друг...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru