Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.11.2012, 14:41   #1
WizarD.89
Форумчанин
 
Аватар для WizarD.89
 
Регистрация: 02.12.2010
Сообщений: 160
По умолчанию иерархия наследования

Помогите мне Составить иерархию нормальную. В ООП новичок.

Есть интерфейс Игровое поле
Код:
interface GameField {
    void print(); // Метод прорисовки поля
    
}
Далее из него наследуем и Делаем числовое игровое поле
Код:
public class NumberGameField implements  GameField {
private  int size;
 private  int field[][];
   
 @Override
   public void print (){
     for (int i=0;i<size;++i){
         for(int i2=0;i2<size;++i2){
               System.out.print(field[i][i2]);
         }
         System.out.print('\n');
     }
   
       
    }
 public int getSize (){
     return size;
 }
  public NumberGameField (int size ){
      this.size=size;
      field= new int[size][size];
    
      
  }
  public int getCell(int x,int y){
      
      return field[x][y];
   }   
 public boolean setCell(int x,int y,int v){
    if ((x>=0 && x<size)&& (y>=0 && y<size)){
    field[x][y]= v;
    return true;
  }
  else {
      return false;
  } 
      
  }
}
Дальше наследуем и получаем Игровое поле для крестиков и ноликов:
Код:
public class X0GameField extends NumberGameField {
  public static final int x=1;
  public static  final int zero=-1;
 public  static  final int nullV=0;
   
    
       public X0GameField(int size){
        super(size);
    }
   @Override
  public void print (){
   for (int i=0;i<getSize();++i){
       for (int i2=0;i2<getSize();++i2){
           if (getCell(i, i2)==x){
               System.out.print('X');
           }else if (getCell(i, i2)==zero)  {
              System.out.print('0'); 
           }else if (getCell(i, i2)==nullV){
              System.out.print(' ');  
           }

       }
         System.out.print('\n');
   }
     
   }
  public boolean setX(int x,int y){
      try {
           if (getCell(x,y)==nullV){
           return setCell(x,y,this.x);
           }else{
                System.out.println("Данное поле занято");
               return false;
           }
         }catch (Exception e){
            
             System.out.println("Выход за границы массива");
             return false;
         }

}
         public boolean setZero(int x,int y){
             
      try {
           if (getCell(x,y)==nullV){
           return setCell(x,y,this.zero);
           }else{
                 System.out.println("Данное поле занято");
               return false;
           }
         }catch (ArrayIndexOutOfBoundsException e){
             System.out.println("Выход за границы массива");
             return false;
         }

}   
}
Теперь в другом пакете объявляем переменную типа X0GameField .

X0GameField a= new X0GameField (5);
ему доступны будут методы setX, setZero и метод setCell так как он наследник NumberGameField.

А мне метод в setCell потомке X0GameField ненужен так как он позволяет засунуть любое значение, а мне нужно только x 0 . как так сделать бы этот метод нельзя было использовать в переменной типа X0GameField, только setX, setZero.
WizarD.89 вне форума Ответить с цитированием
Старый 07.11.2012, 23:31   #2
Музыкант
Пользователь
 
Регистрация: 15.11.2011
Сообщений: 26
По умолчанию

объявить метод setCell как protected
Музыкант вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Классы и основы наследования, с++ Arturko Помощь студентам 3 24.05.2012 21:16
Класс одиночного наследования. wwe2012 Общие вопросы C/C++ 0 04.04.2011 09:34
Класс наследования wwe2012 Общие вопросы C/C++ 0 02.04.2011 09:41
Класс одиночного наследования wwe2012 Общие вопросы C/C++ 0 01.04.2011 10:06
Класс одиночного наследования wwe2012 Общие вопросы C/C++ 0 30.03.2011 17:20