powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Объектно-ориентированные мысли. Совсем новичок
19 сообщений из 19, страница 1 из 1
Объектно-ориентированные мысли. Совсем новичок
    #38489423
DFilushin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
Подскажите как лучше и правильнее поступить в данном случае.

Код: java
1.
2.
3.
4.
public class MyClass {

abstract int getRank ();
}



и потом в наследнике

Код: java
1.
2.
3.
4.
5.
class myChild extends MyClass {
   int getRank(){
     return 10;
   }
}



или лучше так
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
public class MyClass {
  protected int myRank;
  MyClass () {
    myRank = 0;
  }
  int getRank (){
    return myRank;
  }
}



и потом в наследнике

Код: java
1.
2.
3.
4.
5.
class myChild extends MyClass {
  myChild (){
    myRank = 9;
  }
}
...
Рейтинг: 0 / 0
Объектно-ориентированные мысли. Совсем новичок
    #38489433
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если у вас только данными отличаются объекты - то нет смысла создавать иерархию наследования. Наследуются если надо переопределить поведение.
...
Рейтинг: 0 / 0
Объектно-ориентированные мысли. Совсем новичок
    #38489437
DFilushin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
забыл ник,
у объектов разное поведение. Наследование будет применяться.
...
Рейтинг: 0 / 0
Объектно-ориентированные мысли. Совсем новичок
    #38489440
javapecker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DFilushin, это зависит от того чего вы хотите добиться. В первом примере у вас MyClass должен быть абстрактным, то есть непосредственно с ним вы работать все равно не сможете, только с наследником. Во втором примере - MyClass возможно реализует некоторую дефолтную самодостаточную функциональность, но ее можно изменить в наследниках. Делать myRank полем класса или нет зависит от того, понадобится ли он еще где-то за пределами метода/отражает ли он состояние вашего класса и т.д., то есть лучше это обсуждать в контексте конкретной ситуации.
...
Рейтинг: 0 / 0
Объектно-ориентированные мысли. Совсем новичок
    #38489444
javapecker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
javapecker,у объектов разное поведение. Наследование будет применяться.Разное поведение не обязательно означает наследование
...
Рейтинг: 0 / 0
Объектно-ориентированные мысли. Совсем новичок
    #38489450
DFilushin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
javapecker,

Класс описывает фигуру в игре. Ранг - это её вес. При ходе, при атаке будет учитываться, естественно.
...
Рейтинг: 0 / 0
Объектно-ориентированные мысли. Совсем новичок
    #38489454
DFilushin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
наследников будет 10. Каждый наследник реализует разные ходы.
...
Рейтинг: 0 / 0
Объектно-ориентированные мысли. Совсем новичок
    #38489457
DFilushin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
то есть, если мне понадобиться знать только ранг без использования в других методах, можно использовать абстрактный метод. Если же где-то внутри других методов, то лучше в них обращаться к локальному полю?
...
Рейтинг: 0 / 0
Объектно-ориентированные мысли. Совсем новичок
    #38489463
javapecker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DFilushin, Класс описывает фигуру в игре. Ранг - это её вес. При ходе, при атаке будет учитываться, естественно. Самое простое - сделать фигуру абстрактным классом, свойства общие для всех фигур описать в нем.
...
Рейтинг: 0 / 0
Объектно-ориентированные мысли. Совсем новичок
    #38489470
javapecker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
javapecker,то есть, если мне понадобиться знать только ранг без использования в других методах, можно использовать абстрактный методНет, я такого не писал. Метод getRank() делайте в абстрактном классе MyClass, но сам метод абстрактным делать не нужно, и переопределять в наследниках тоже. Пусть просто возвращает значение свойства. Абстрактными делайте те методы, которые должны вести себя по разному в наследниках.
...
Рейтинг: 0 / 0
Объектно-ориентированные мысли. Совсем новичок
    #38489482
DFilushin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
javapeckerDFilushin, Класс описывает фигуру в игре. Ранг - это её вес. При ходе, при атаке будет учитываться, естественно. Самое простое - сделать фигуру абстрактным классом, свойства общие для всех фигур описать в нем.

Как-то так?

Код: 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.
public class MyClass {
  abstract int getRank ();
  abstract Coord getPosition();
  abstract void Attack();
  abstract Boolean isVisible();
}


class Piece1 extends MyClass {
  final private int Rank = 10;
  private visible;
  private Coord xy;


  int getRank () {
    return Rank;
  }
  
  Coord getPosition () {
    return xy;
}

  Boolean isVisible(){
    return visible;
  }
}
...
Рейтинг: 0 / 0
Объектно-ориентированные мысли. Совсем новичок
    #38489514
javapecker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DFilushin,Как-то так?Нет, не так. MyClass сделайте абстрактным, общие для всех фигур свойства (rank,coord) описывайте в нем, абстрактными делайте только те методы, у которых в наследниках изменится поведение. То есть getRank, isVisible,getPosition не надо делать абстрактными.
...
Рейтинг: 0 / 0
Объектно-ориентированные мысли. Совсем новичок
    #38489530
DFilushin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
javapecker,

тогда не понятно с установкой начальных значений полей потомков. Будутт protected поле visible, rank, и в конструкторе потомков назначать их инит-значения. Так?
...
Рейтинг: 0 / 0
Объектно-ориентированные мысли. Совсем новичок
    #38489558
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DFilushin,

Ты весь пример про фигуры показывай, тогда будет толк.
...
Рейтинг: 0 / 0
Объектно-ориентированные мысли. Совсем новичок
    #38489560
DFilushin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv,

да весь класс ещё рано показывать. Я новичок, только начал писать. Читаю книжку "Философия явы", пытаюсь сразу на примере и что-нибудь делать. Пока есть фигуры, которые ходят по полю.
...
Рейтинг: 0 / 0
Объектно-ориентированные мысли. Совсем новичок
    #38489573
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DFilushinjavapecker,

тогда не понятно с установкой начальных значений полей потомков. Будутт protected поле visible, rank, и в конструкторе потомков назначать их инит-значения. Так?

Попробую обьяснить свою мысль еще раз, вот смотри. Тебе правильно подсказывают, что надо вынести общее поведение в супер класс а в подклассе имплементить только то что реально отличается. Какой ранк у фигуры абсолютно неважно для подкласса, ты все это можешь обрабатывать в супер классе. А вот метод ход(), надо сделать абстрактным и реалиовывать в потомках.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
p

ublic class MyClass {
private int Rank = 10;
  private visible;
  private Coord xy;
  int getRank (){
return Rank;
};

public MyClass(int Rank....) {
this.Rank = Rank;
}
//same for coord and visible
  abstract void action();
}


class Piece1 extends MyClass {
  void action() {
//some logic here
}
}
...
Рейтинг: 0 / 0
Объектно-ориентированные мысли. Совсем новичок
    #38489578
DFilushin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: 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.
package game;


enum FigureColor {RED, BLUE}

abstract class Figure {

	int rank;
	String name;
	Boolean isDead; //срублена
	Boolean isStatic;//неподвижная фигура (мина)
	Boolean isOpenFigure;//закрыта/открыта для неприятеля
	FigureColor color;//за кого играем КРАСНЫЕ/СИНИЕ
	
	public abstract void moveTo(int row, int Col);
	public abstract void attackTo(int row, int col);
	

	
	public Figure(){
		isDead = false;
		isOpenFigure = false;
	}
	
	public int getRank(){
		/*Ранг фигуры*/
		return rank;
	}
	
	public String getName(){
		/*Имя фигуры*/
		return name;
	}
	
	public Boolean canMove(){
		return this.isStatic;
	}
	
	public Boolean IsDead (){
		return isDead;
	}
	
		
}
...
Рейтинг: 0 / 0
Объектно-ориентированные мысли. Совсем новичок
    #38489589
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DFilushin,

да, как-то так. Но точнее можно сказать только зная все условия. Но в целом начало хорошее, думаю
...
Рейтинг: 0 / 0
Объектно-ориентированные мысли. Совсем новичок
    #38489593
DFilushin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за помощь и идеи.
Не всегда всё сразу понятно в книжках
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Объектно-ориентированные мысли. Совсем новичок
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]