package J_Teacher;
class J_Employee{
	public int m_workYear; //工作的年限
	public J_Employee () {
		m_workYear=1;
		
	}//J_Employee构造方法结束
}//类J_Employee结束
public class J_Teacher extends J_Employee{
	public int m_classHour;//授课的课时
	public J_Teacher() {
		m_classHour=96;
	}//J_Teacher()构造方法结束
    public void mb_printInfo() {
    	System.out.println("该教师的工作年限为"+m_workYear);
    	System.out.println("该教师授课的课时为"+m_classHour);
    }
    public static void main(String args[]) {
    	J_Teacher tom=new J_Teacher();
    	tom.mb_printInfo();
    }//方法main结束
}//类J_Teacher结束

在上面的例程中,类J_Employee是类J_Teacher的直接父类,是表示职工的类,类J_Teacher是类J_Employee的子类,是表示教师的类。

虽然在类J_Teacher的构造方法中没有显式地调用其直接父类的构造方法,但是java虚拟机一般会自动隐式地调用其直接父类的不含任何参数的构造方法。因此,教师的工作年限m_workYear也会被初始化为1.

在子类和父类之间可以进行类型转换,有两种:

  一种是隐式类型转换:即将类型为子类型的数据转换成为类型为其父类型的数据,这时可以不需要强制类型转换运算                      符“()”

  一种是显式类型转换:即将类型为父类型的数据转换成为类型为其子类型的数据,这时通常需要强制类型转换运算                          符“()”