Lesson 3 | Class declarations |
Objective | Learn about class and interface declarations. |
Java Class Declarations
In order to write object-oriented code using Java, you need to be able to declare and use classes. Classes are declared using the following syntax:
class ClassName {
// Class body
}
This declares a class named
ClassName
that is a subclass of
Object
.
To declare a class that is a subclass of another class (named
SuperClass
) you use the
extends
clause:
class ClassName extends SuperClass {
// Class body
}
An interface defines methods that are provided by those classes that implement the interface.
To specify that a class implements one or more interfaces, you use the
implements
clause:
Given the following code, which statements are true?
public interface Automobile { String describe(); }
class FourWheeler implements Automobile{
String name;
public String describe(){ return " 4 Wheeler " + name; }
}
class TwoWheeler extends FourWheeler{
String name;
public String describe(){ return " 2 Wheeler " + name; }
}
Select 3 options:
- An instance of TwoWheeler is also an instance of FourWheeler.
- An instance of TwoWheeler is a valid instance of Automobile.
- The use of inheritance is not justified here because a TwoWheeler is not really a FourWheeler.
- The code will compile only if name is removed from TwoWheeler.
- The code will fail to compile.
Answer: a,b,c,
Explanation:
The use of inheritance in this code is not justifiable, since conceptually,
a TwoWheeler is-not-a FourWheeler. I posted a question in the forum with respect to this question and the admin responded.
class ClassName
extends SuperClass implements
Interface1, Interface2 {
// Class body
}
By stating that
ClassName
implements
Interface1
and
Interface2
we require
ClassName
to provide an implementation of all the methods defined in
Interface1
and
Interface2
.
A class may specify the optional modifiers
public
,
abstract
, and
final
.
These are placed before the class declaration. A
public
class may be accessed outside the package in which it is declared. An
abstract
class is a class that is incomplete in the sense that it may declare one or more
abstract methods[1]. A
final
class identifies a class that may not be extended by a subclass.
A class may not be both
final
and
abstract
. The following declares a
public
and
final
class:
final Class
The following class is a final class that cannot be extended.
public final class ClassName {
// Class body
}
The Class Body
The class body declares
members[2] (field variables and methods), constructors, and initializers. Class members may also be inner classes or inner interfaces. Class members and initializers are covered in Module 5.
[1]
Abstract method: A method whose implementation is deferred to a subclass.
[2]
Member: An element of a class or interface, such as a field variable, method, or inner class. An element of a package, such as a class, interface, or subpackage.