# class

- `class` NAME { MEMBER ... }
  This form creates a class with the given name that extends Object. If no constructor is provided, one will be generated that takes no arguments.
- `class` NAME `extends` NAME { MEMBER ... }
  This form creates a class with the given name that inherits from the class named by `extends`. If no constructor is provided, one will be generated that takes no arguments.
- `abstract` `class` NAME { MEMBER ... }
  This form creates an abstract class with the given name that extends Object. Members can include abstract methods.
- `abstract` `class` NAME `extends` NAME { MEMBER ... }
  This form creates an abstract class with the given name that inherits from the class named by `extends`. Members can include abstract methods.
- `class` NAME `implements` NAME, NAME ... { MEMBER ... }
  This form creates a class with the given name that extends Object and implements the named interfaces. If no constructor is provided, one will be generated that takes no arguments. All methods named in the interfaces must be present among the members.
- `class` NAME `extends` NAME `implements` NAME, NAME ... { MEMBER ... }
  This form creates a class with the given name that inherits from the class named by `extends` and implements the named interfaces. If no constructor is provided, one will be generated that takes no arguments. All methods named in the interfaces must be present among the members.
- `abstract` `class` NAME `implements` NAME, NAME ... { MEMBER ... }
  This form creates an abstract class with the given name that extends Object and implements the named interfaces. Members can include abstract methods. This class need not implement all methods in the interfaces, but all non-abstract subclasses must.
- `abstract` `class` NAME `extends` NAME `implements` NAME, NAME ... { MEMBER ... }
  This form creates an abstract class with the given name that inherits from the class named by `extends` and implements the named interfaces. Members can include abstract methods. This class need not implement all methods in the interfaces, but all non-abstract subclasses must.

ProfessorJ Intermediate Language