Java用extends关键字表示这种继承关系。
Java的继承只允许单继承,即一个类只能有一个父类。
代码:
工程师类:
package com.jredu.oopch02;
/**
* 工程师类
* @author Administrator
*
*/
public class Engineer {
//共有的属性和方法
//子类可以继承
protected int id;
protected String name;
protected String enterTime;
public Engineer(int id, String name, String enterTime) {
super();
this.id = id;
this.name = name;
this.enterTime = enterTime;
}
public void showInfo() {
System.out.println("编号:"+id+",姓名:"+name+",入职时间:"+enterTime);
}
}
软件工程师类:
package com.jredu.oopch02;
/**
* 软件工程师 继承工程师类
* @author Administrator
*
*/
public class SoftEnigneer extends Engineer {
//独有的属性和方法
private String type;//语言类型
public SoftEnigneer(int id, String name, String entertime,String type) {
super(id, name, entertime);
// TODO Auto-generated constructor stub
this.type=type;
}
public void coding(){
System.out.println("正在编程");
}
@Override
public void showInfo() {
// TODO Auto-generated method stub
super.showInfo();
System.out.println("语言类型是"+type);
}
}
测试工程师类:
package com.jredu.oopch02;
/**
* 测试工程师继承工程师类
* @author Administrator
*
*/
public class TestEngineer extends Engineer {
private String lever;
public TestEngineer(int id, String name, String entertime,String lever) {
super(id, name, entertime);
// TODO Auto-generated constructor stub
this.lever = lever;
}
public void test(){
System.out.println("正在测试");
}
/**
* 方法重写
* 方法重写的默认行为是:调用父类方法内容
* 方法重写:可以在子类中修改父类的方法内容
*/
@Override //@Override:是重写。注解标识是@
public void showInfo() {
// TODO Auto-generated method stub
super.showInfo();//调用父类的方法
System.out.println(",等级:"+lever);
}
}
测试类:
package com.jredu.oopch02;
public class Teste {
public static void main(String[] args) {
//调用父类中定义的方法结果:
//1、如果子类没有重写父类的方法:调用的就是父类的实现
//2、如果子类重写了父类的方法,调用的就是子类中的实现
SoftEnigneer soft = new SoftEnigneer(1, "张三", "2015-03-06", "java");
soft.showInfo();
soft.coding();
TestEngineer test = new TestEngineer(2, "李四", "2016-03-06", "测试");
test.showInfo();
test.test();
}
}