A class with empty methods and/or the methods are declared abstract, should be abstract:

Classes with only empty class declarations, as in:

    Class MyUtilityClass
    {
    ClassMethod m1() { }
    ClassMethod m2() [ abstract ] { /* ... */ }
    }

are often "utility classes", which have no other purpose than to offer a set of methods for other classes to use.

Such classes can be made abstract; if they are not, it is possible to instantiate them using:

    #dim foo as MyUtilityClass
    set foo = ##class(MyUtilityClass).%New()

In order to prevent this, you can declare the class as abstract:

    Class MyUtilityClass [ Abstract ]
    {
        // etc
    }