初学java--重载,重写和继承

时间:2022-09-20 08:51:53

方法重载,指同一个类中多个方法(与返回值,访问修饰符无关): 方法名相同 参数列表不同
构造函数重载
方法重写的规则 在继承关系的子类中 重写的访问修饰符不能比父类的访问修饰符更严格(例如。父类是默认,则重写则可以使默认、protect和public) 重写的方法名、参数、返回值类型必须与父类相同 私有方法不能继承因而也无法重写
方法重写vs方法重载
  位置 方法名 参数表 返回值 访问修饰符
方法重写 子类 相同 相同 相同 不能比父类更严格
方法重载 同类 相同 不同 无关 无关

继承 编写父类 class Father{ //公共的属性和方法 } 编写子类,继承父类,子类只能继承一个父类 class Sonextends(extends为继承关键字) Father{ //子类特有的属性和方法 }
初学java--重载,重写和继承
一个类创建对象时的初始化顺序:属性 --> 代码块(初始化 )--> 构造, 有继承关系后,先有父类,再有子类:父类属性-->父类构造方法-->子类属性-->子类构造方法

有些父类成员不能继承 1.子类不能访问父类private成员 2.子类 与父类不在同包,使用默认访问权限(不添加访问修饰符即为默认访问权限) 3.构造方法(父类的构造在子类中一定要被调用)
此处为继承和重写的代码实例:
package com.jredu.jicheng;
/**
* 工程师类(父类)
* @author Hello
*
*/

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.jicheng;
/**
* 软件工程师,继承工程师类(子类)
* @author Hello
*
*/
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;
}
@Override//重写
public void showInfo() {
// TODO Auto-generated method stub
super.showInfo();
System.out.println("语言类型:"+type);
}
public void coding(){
System.out.println("正在编程");
}

}

package com.jredu.jicheng;
/**
* 测试工程师(子类)
* @author Hello
*
*/

public class TestEngineer extends Engineer {
private String level;

public TestEngineer(int id, String name, String entertime,String level) {
super(id, name, entertime);//使用super可以调用父类的属性,否则无法调用父类属性
// TODO Auto-generated constructor stub
this.level=level;
}
public void test(){
System.out.println("开始测试");
}

}

package com.jredu.jicheng;
/**
* 测试类
* @author Hello
*
*/

public class Test {
public static void main(String[] args) {
//调用父类中的定义的方法结果
//如果子类没有重写父类的方法,调用的就是父类的实现
//如果子类重写了父类的方法,调用的就是子类中的实现
SoftEngineer soft=new SoftEngineer(1, "张三", "15-08-09", "java工程师");
soft.showInfo();
soft.coding();
TestEngineer test=new TestEngineer(2, "李四", "11-01-01", "高级测试工程师");
test.showInfo();
test.test();
}
}