La pregunta es, ¿sabes cual es la utilidad de las claves foráneas? Se utilizan para relacionar registros y tablas. Si un registro no está relacionado con otro registro de otra tabla, modificar un registro no va a modificar el otro.
Si has puesto TODOS los elementos de la tabla a NULL, entonces NINGUNO va a ser modificado al hacer el UPDATE, aunque tenga CASCADE.
Porque es una clase abstracta. Una clase abstracta no se puede instanciar, va en contra de la utilidad de una clase abstracta. De la misma forma, una interface no se instancia.
¿Por qué quieres crear un objeto de una clase abstracta? Estarías creando un objeto sin sentido.
Si lo que quieres es guardar dentro de una variable de la clase IClase, un objeto que herede de esta, tendrás que hacer un puntero.