重写重载,重构,加载,覆盖的区别

本文探讨了Java编程中的方法重载、覆盖和重构概念。方法重载用于增强程序灵活性,通过相同的函数名但不同的参数列表实现。覆盖(重写)通常发生在子类对父类方法的定制,而重构则是对代码结构的改进以提高可读性和维护性。文中通过实例代码解释了这些概念。

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

楼主的问题问得很好,但是我们每一个问题都是想要一个结果的,这个问题涉及java基础方面的,重载/重写(其实就是覆盖)针对的对象都是方法,所以我们具体的来说是方法重载和方法覆盖是怎么一回事,重构。。就像楼上说的那样,是针对代码,写得不好自然要重新来写,而对于初学者来说理解方法重载和方法覆盖是一个很重要的课题。

这之前需要楼主先明白什么是方法,方法其实就是函数(java中的称呼不一样而已),顾名思义就是完成一个动作或者功能的代码体(用{}包起来),一个方法必须具备返回类型/方法名/参数这三个基本元素,当然也有例外(比如构造方法是没有返回类型的)。

重载是为了让程序能够具备更好地灵活性而设计的,使用它可以节省很多时间,让代码更加简洁。
下面这个例子很好地说明了这点,楼主可以看下:

public class Circle {
private int x,y,r;
private double pi=3.1415;
public Circle(int x,int y) {
this.x=x;
this.y=y;
r=1;
this.prt();
}
public Circle(int x,int y,int r) {
this.x=x;
this.y=y;
this.r=r;
this.prt();
}
public void prt() {
System.out.println("x="+x+",y="+y+",r="+r);
}

public static void main(String[] args) {
Circle c1=new Circle(10,10);
Circle c2=new Circle(20,20,10);
}
}

Circle这个类保存一个圆,它拥有圆心坐标x y,半径长度r,如果在建立的时候不输入r,那么就默认半径r=1,方法重载要求方法名相同,返回类型相同,但是参数的类型或者个数不同,或者参数的顺序不同,在这里我们Circle构造方法的参数个数就不同,所以重载就发生了。

而覆盖是发生在不同类中的事情,通常是子类重写父类的方法,这个在接口中被普遍采用,因为实现接口以后必须重写某些方法,否则程序无法正确编译。

下面这个程序能很好的帮助你来理解覆盖:

class PrintFather {
int i=1;
public void prt() {
System.out.println("i="+i);
}
}

public class PrintOverriden extends PrintFather {
String name="PrintOverriden";
public void prt() {
System.out.println("Name="+name);
System.out.println("i="+i);
}
public static void main(String[] args) {
PrintOverriden p=new PrintOverriden();
p.prt();
}
}

父类里的prt()方法只打印int i,然后子类需要打印出String name,所以子类重写了prt()这个方法。

至于加载的意思,其实就是让编译器执行某段程序,可以是类可以是包可以是任何编译器能够编译的代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值