001// Copyright 2002 by Basil Vandegriend. All rights reserved. 002 003package com.basilv.examples.enums; 004 005/** 006 * Example of an enum with abstract methods and properties. 007 */ 008public enum Terrain { 009 010 NONE(""), 011 012 WALL("Wall") { 013 @Override public boolean preventsMovement() { 014 return true; 015 } 016 017 @Override public boolean blocksLineOfSight() { 018 return true; 019 } 020 }, 021 022 PIT("Pit") { 023 @Override public boolean preventsMovement() { 024 return true; 025 } 026 }, 027 028 GLASS_WALL("Glass Wall") { 029 @Override public boolean preventsMovement() { 030 return WALL.preventsMovement(); 031 } 032 }, 033 034 FOG("Fog") { 035 @Override public boolean blocksLineOfSight() { 036 return true; 037 } 038 }; 039 040 private String displayName; 041 042 private Terrain(String displayName) { 043 this.displayName = displayName; 044 } 045 046 public String getDisplayName() { 047 return displayName; 048 } 049 050 public boolean preventsMovement() { 051 return false; 052 } 053 054 public boolean blocksLineOfSight() { 055 return false; 056 } 057 058}