I suggest using nicematrix.
Most of the elements of your matrix are here. I leave it to you to deal with font styles and the remaining cells.

To make the cells with the cross behind the text I made a macro using TikZ to draw two lines with a white rectangular node in the middle. Since this happens with \CodeBefore, the cell contents are placed on top.
The graphicx package is used for \rotatebox.
\documentclass{article}
\usepackage{tikz, nicematrix}
\usepackage{graphicx}
\newcommand{\xbox}[5][]{
\draw[#1] ({#2}-|{#3}) --node[fill=white, minimum size=5mm]{} ({#4}-|{#5});
\draw[#1] ({#4}-|{#3}) --node[fill=white, minimum size=5mm]{} ({#2}-|{#5});
}
\begin{document}
\begin{NiceTabular}{{2}{wc{.4cm}}{6}{wc{1cm}}}[corners, hvlines]
\CodeBefore
\cellcolor{gray!20}{4-3,4-5,6-5}
\cellcolor{gray!40}{3-4,3-6,5-6}
\cellcolor{gray!60}{4-4,4-6,6-6}
\tikz {
\xbox[densely dashed, gray]{3}{3}{4}{4}
\xbox[densely dashed]{3}{5}{4}{6}
\xbox{5}{3}{7}{5}
}
\Body
& & \Block{1-4}{Simultaneous sibling roles} & & & & & \
& & \Block{1-2}{no} & & \Block{1-2}{yes} & & & \
\RowStyle[cell-space-limits=4mm]{}\Block{4-1}{\rotatebox{90}{Multiple Perspectives}} & \Block{2-1}{\rotate no} & A/a & B2/a & A/b & B2/b & X & \Block{4-1}{\rotatebox{-90}{\parbox{4cm}{\centering Dynamic Binding\ with highest priority for...}}} \
\RowStyle[cell-space-limits=4mm]{} & & B1/a & B3/a & B1/b & B3/b & X & \
\RowStyle[cell-space-limits=4mm]{} & \Block{2-1}{\rotate yes} & \Block{2-2}{!d)} & & A/c & B2/c & X & \
\RowStyle[cell-space-limits=4mm]{} & & & & B1/c & B3/c & X & \
& & fixed & variable & fixed & variable & & \
& & \Block{1-4}{Interface\visible through an object reference} & & & & & \
\end{NiceTabular}
\end{document}