方法重载:指同一个类中多个方法,
方法名相同 //与返回值、访问修饰符无关
参数列表不同
方法重写:继承父类的方法,讲继承的方法重新改写(不在同一个类中)
例如:一个工程类,有软件工程师和测试工程师
工程类Engineer.java
public class Engineer {
//共有的属性和方法
// private 私有化的访问修饰符 就是子类也不能继承
//protected 访问修饰符子类可以继承
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.print("编号:"+id+",姓名:"+name+",入职时间:"+entertime);
}
}
软件工程师类SoftEngineer.java
public class SoftEngineer extends Engineer {
//独有的属性和方法
private String type;//语言类型
public SoftEngineer(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);
}
}
测试工程师类TestEngineer.java
public class TestEngineer extends Engineer {
private String level;
public TestEngineer(int id, String name, String entertime,String level) {
super(id, name, entertime);
// TODO Auto-generated constructor stub
this.level = level;
}
public void test(){
System.out.println("正在测试。。");
}
/**
* 方法重写(调用(重写)父类中有的方法)
* 的默认行为是调用父类方法内容
* 作用:可以在子类中修改父类的内容
*/
@Override//@:注解标识符 //重写
public void showinfo() {
// TODO Auto-generated method stub
super.showinfo();
System.out.println(",等级"+level);
}
}
测试类Test.java
public static void main(String[] args) {
// TODO Auto-generated method stub
//调用父类中定义的方法结果:
//1、如果子类没有重写父类的方法,调用的就是父类的实现
//如果子类重写了父类的方法,调用的就是子类中的实现
SoftEngineer soft = new SoftEngineer(1, "李华", "2017-05-21", "java");
soft.showinfo();
soft.coding();
TestEngineer test = new TestEngineer(2, "王娜", "2017-08-08", "c++");
test.showinfo();
test.test();
}
}