重写重载,重构,加载,覆盖的区别
2015-01-25 13:31
183 查看
楼主的问题问得很好,但是我们每一个问题都是想要一个结果的,这个问题涉及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()这个方法。 至于加载的意思,其实就是让编译器执行某段程序,可以是类可以是包可以是任何编译器能够编译的代码。
相关文章推荐
- 覆盖(重写),重构,重载的区别
- Swift中 覆盖(重写),重构,重载的区别
- 覆盖(重写),重构,重载的区别和这到底是否重载?
- java中重载和覆盖(又称重写)的区别
- 重写、覆盖、重载、多态几个概念的区别分析
- java中覆盖、重写与重载的区别
- 转:java中覆盖、重写与重载的区别
- 转载--重写、覆盖、重载、多态几个概念的区别分析
- 重写、覆盖、重载、多态几个概念的区别分析
- 重写(overwrite)、重载(overload)和覆盖(override)三者之间的区别
- 重写、覆盖、重载、隐藏、多态几个概念的区别分析
- 重写、覆盖、重载、多态几个概念的区别分析
- 重载、隐藏和重写(有的书叫“覆盖”)的区别?
- 重写、覆盖、重载、多态几个概念的区别分析
- JAVA:重载overload与覆盖(重写)override的区别
- 重载与覆盖(重写)区别详解(转自http://zhidao.baidu.com/question/2196348.html)
- 转:java中覆盖、重写与重载的区别
- 重写、覆盖、重载、多态几个概念的区别分析
- 重写、覆盖、重载、多态几个概念的区别分析(转)
- 重载(overload)和重写(overried,有的书也叫做“覆盖”)的区别?