Punkty przecięcia można podzielić według dwóch podstawowych kryteriów: złożoności: proste punkty przecięcia - zbudowane z jednej klauzuli dopasowującej, punkty złożone - opisane negacją, alternatywą lub koniunkcją prostych punktów przecięcia. tożsamości: nazwane punkty przecięcia - mogą być wielokrotnie używane w różnych miejscach aplikacji, anonimowe punkty przecięcia - są tworzone w miejscu ich użycia i nie można odwołać się do nich z innej części systemu.
Poniższy przykład ilustruje punkt przecięcia grupujący w sobie zbiór wywołań metod pewnych abstrakcyjnych klas geometrycznych: public pointcut zmianaGeometrii(): call(void FigureElement.setXY(int,int)) || call(void Point.setX(int)) || call(void Point.setY(int)) || call(void Line.setP1(Point)) || call(void Line.setP2(Point));
Dowolny element, który w punkcie przecięcia został opisany szczegółowo, można opisać także ogólnie, stosując znaki unikowe * (dopasowanie nazwy) oraz + (domknięcie przechodnie relacji dziedziczenia). Lista argumentów zaś może być zastąpiona poprzez dwie kropki: public pointcut zmianaGeometrii(): call(void FigureElement.set*(..)) || call(void Point.set*(int)) || call(void Line.set*(Point));