Is this bad OO programming? Passing this down through methods
===

Ok, assume I have a class, X and X is something which has an aggregate relationship with other objects. Lets pretend X is a soccer stadium.

X is full of class spectators. However, the behaviour of each spectator for a particular activity differs. Instead of IF statements, I want the different behaviour to be within the spectator class, so that I can use dynamic binding.

However, the problem is that the behaviour the spectator performs affects the "soccer stadium" class. So I was thinking of passing "this" from the soccer stadium class, through a method, to the Spectator class, so that the spectator class can do something to the Soccer Stadium class?

    public class SoccerStadium{
        SpecatorInterface s = new Spectator();
        
        public void SpectatorBehaviour(){
            s.doSomething(this);
        }
    
        public void doSomethingthingBySpecator(){
        }
    }
    
    public class Spectator implements SpecatorInterface{
        public void doSomething(SoccerStadium s){
            s.doSomethingthingBySpecator();
        }
    }


I only want to do this so that I can use dynamic binding and alter the behaviour in `Specator.doSomething()` so that I can have lots of different types of SpectatorSuperClass as an attribute passed to SoccerStadium and then have the different behaviour.