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

本文详细介绍了方法重载与重写的基本概念及其区别,包括如何在同一个类中通过参数列表的不同实现方法重载,以及如何在子类中正确地重写父类的方法,并遵循相应的访问修饰符规则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


方法重载,指同一个类中多个方法(与返回值,访问修饰符无关):
方法名相同
参数列表不同

构造函数重载

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

方法重写vs方法重载
 位置方法名参数表返回值访问修饰符
方法重写子类相同 相同 相同不能比父类更严格
方法重载同类 相同不同无关无关

继承
编写父类
class Father{
//公共的属性和方法
}
编写子类,继承父类,子类只能继承一个父类
class Son extends(extends为继承关键字) Father{
//子类特有的属性和方法
}


一个类创建对象时的初始化顺序:属性 --> 代码块(初始化 )--> 构造,
有继承关系后,先有父类,再有子类:父类属性-->父类构造方法-->子类属性-->子类构造方法


有些父类成员不能继承
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();
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值