52 lines
1.3 KiB
Java
52 lines
1.3 KiB
Java
|
Simple Inheritance
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
public class SimpleInheritance /* implicitly inherits from Object class */ {
|
||
|
// available to subclass and package level clients
|
||
|
protected int balance;
|
||
|
|
||
|
public SimpleInheritance( String str ) {
|
||
|
System.out.println( "SimpleInheritance says: " + str );
|
||
|
}
|
||
|
|
||
|
public void message() {
|
||
|
|
||
|
}
|
||
|
}
|
||
|
|
||
|
class MySubclass extends SimpleInheritance {
|
||
|
// must define constructor because parent class
|
||
|
// does not define a default constructor
|
||
|
public MySubclass( String str ) {
|
||
|
// call the parent class's constructor
|
||
|
super( str );
|
||
|
}
|
||
|
|
||
|
// i've overriden the message method declared within SimpleInheritance
|
||
|
public void message() {
|
||
|
// but can call it by using the super keyword
|
||
|
super.message();
|
||
|
|
||
|
// i can also access non-private implementation, best not to have any
|
||
|
// in the first place, and expose through controlled accessor methods
|
||
|
System.out.println( super.balance );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
class PackageLevelClient {
|
||
|
public PackageLevelClient() {
|
||
|
SimpleInheritance is = new MySubclass( "yo" );
|
||
|
|
||
|
// nasty, as a class in the package i can access
|
||
|
// all protected variables defined within this package,
|
||
|
// even though i'm not a part of the inheritance tree
|
||
|
// yuk, yuk, yuk, yuk!!!!!!!!!!
|
||
|
is.balance = 45;
|
||
|
}
|
||
|
|
||
|
}
|