创建一个类时,总是在继承,如果没有明确指出要从其他类继承,都会默认为继承标准根类Object。
继承需要在类体后加关键字extends再加基类(父类)名称。然后会自动得到基类中所有的域和方法。
例如:基类Cleansesr.java
package test1;
public class Cleanser{
private String s="Cleanser";
public void append(String a){
s+=a;
}
public void dilute(){
append(" 1dilute() ");
}
public void apply(){
append(" 1apply() ");
}
public void scrub(){
append(" 1scrub() ");
}
public String toString(){
return s;
}
public static void main(String[] args){
Cleanser x = new Cleanser();
x.dilute();
x.apply();
x.scrub();
System.out.println(x);
}
}/* Output:
Cleanser 1dilute() 1apply() 1scrub()
*///:~
子类:Detergent.java
package test2;
import test1.*;
public class Detergent extends Cleanser{
public void scrub(){
append(" 2scrub() ");
super.scrub();//使用1中的scrub
}
public void foam(){
append(" 2foam() ");
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Detergent x =new Detergent();
x.dilute();
x.apply();
x.scrub();
x.foam();
System.out.println(x);//开始输出
System.out.println("Testing base class:");
Cleanser.main(args);
}
}/*Output:
Cleanser 1dilute() 1apply() 2scrub() 1scrub() 2foam()
Testing base class:
Cleanser 1dilute() 1apply() 1scrub()
*///:~
继承中,子类不一定要使用父类的方法,父类中的方法必须为public,如果没又加任何权限修,默认为包访问权限。
Detergent中继承了Cleanser的所有参数,方法。然后重载自定义了自己的scrub()方法并又通过超继承super.scrub()调用父类的scrub方法。最后调用Cleanser.main()并将命令行中获取的参数传递给它。
注释:为每个类都设置一个main()方法的技术可以使每个类的单元测试都变得简便易行,而且在完成单元测试后也无需删除main(),可以留待下次测试使用。