override 与 overload 的区别+例子
来源:互联网 发布:js tostring 36 编辑:程序博客网 时间:2024/05/04 11:04
override 是覆写,overload 是重载。
override 是覆写父类中的已经存在的方法,在完父类方法提供的功能上,加入新的内容,或完成修改方法提供的功能。
如:
class ClassA{
public void draw(){
........
System.out.println("ClassA.draw()");
}
}
class ClassB extends ClassA { //从 ClassA 继生一个 ClassB
public void draw() {
.......
System.out.println("ClassB.draw()");
super.draw(); // 关键字 super 表示父类 这里为调用父类的 draw() 方法
}
}
运行结果为:
ClassB.draw()
ClassA.draw()
注意:super 表示父类
一般override的比较多的有 equals()
Object 的定义如下:
public boolean equals(Object obj) {
return (this == obj);
}
还有 finalize
protected void finalize() throws Throwable { }
overload 重载是在现在类的提供的参数上,加入新的参数功能。
最出名的就是 System.out.println() 了。
你可以用同样的函数,输出不同的数据类型
如: 字符串 System.out.println("This is a TEST");
日期对象 System.out.println(new Date());
整型 System.out.println(500);
布尔型 System.out.println(obj1.equals(obj2));
定义就很简单,就是定义几个函数,不同的参数而已
如:
class ClassA {
public void show(int value) {
....
}
public void show(String str) {
.......
}
}
常用的是在构造函数里。
如:
class MyClass{
public int value = 100;
public MyClass(){
System.out.println("Create Class MyClass.");
}
public MyClass(int Value){
this(); //调用另一个构造器
System.out.println("Class MyClass(Value)");
value = Value;
}
...
}
注意:这里的 this(); 调用了另一个构造器
完整代码如下:
01
02
class MyClass{
03 public int value = 100;
04
05 public MyClass(){
06 System.out.println("Create Class MyClass.");
07 }
08
09 public MyClass(int Value){
10 this(); //调用另一个构造器
11 System.out.println("Class MyClass(Value)");
12 value = Value;
13 }
14
15 public void draw(){
16 System.out.println("MyClass draw()");
17 }
18
19 public boolean equals(MyClass c) {
20 return (this.value == c.value);
21 super.equals(
22 }
23 }
24
25 class MyClassA extends MyClass {
26 public void draw() {
27 System.out.println("MyClassA draw()");
28 super.draw();
29 }
30 }
31
32 public class ClassTest {
33 public static void main(String[] args){
34 MyClass class1 = new MyClass();
35 MyClass class2 = new MyClass(120);
36
37 class1.value = 120;
38 //class2.value = 120;
39
40 System.out.println("class1 == class2 :" +(class1 == class2));
41 System.out.println("class1.equals(class2):" + class1.equals(class2) );
42 System.out.println("Test OK!");
43
44 MyClassA class3 = new MyClassA();
45 class3.draw();
46 }
47 }
48
49
运行结果:
Create Class MyClass.
Create Class MyClass.
Class MyClass(Value)
class1 == class2 :false
class1.equals(class2):true
Test OK!
Create Class MyClass.
MyClassA draw()
MyClass draw()
{以上内容是本人编写,如有不同意见,请留言}
override 是覆写父类中的已经存在的方法,在完父类方法提供的功能上,加入新的内容,或完成修改方法提供的功能。
如:
class ClassA{
public void draw(){
........
System.out.println("ClassA.draw()");
}
}
class ClassB extends ClassA { //从 ClassA 继生一个 ClassB
public void draw() {
.......
System.out.println("ClassB.draw()");
super.draw(); // 关键字 super 表示父类 这里为调用父类的 draw() 方法
}
}
运行结果为:
ClassB.draw()
ClassA.draw()
注意:super 表示父类
一般override的比较多的有 equals()
Object 的定义如下:
public boolean equals(Object obj) {
return (this == obj);
}
还有 finalize
protected void finalize() throws Throwable { }
overload 重载是在现在类的提供的参数上,加入新的参数功能。
最出名的就是 System.out.println() 了。
你可以用同样的函数,输出不同的数据类型
如: 字符串 System.out.println("This is a TEST");
日期对象 System.out.println(new Date());
整型 System.out.println(500);
布尔型 System.out.println(obj1.equals(obj2));
定义就很简单,就是定义几个函数,不同的参数而已
如:
class ClassA {
public void show(int value) {
....
}
public void show(String str) {
.......
}
}
常用的是在构造函数里。
如:
class MyClass{
public int value = 100;
public MyClass(){
System.out.println("Create Class MyClass.");
}
public MyClass(int Value){
this(); //调用另一个构造器
System.out.println("Class MyClass(Value)");
value = Value;
}
...
}
注意:这里的 this(); 调用了另一个构造器
完整代码如下:
01
02
class MyClass{
03 public int value = 100;
04
05 public MyClass(){
06 System.out.println("Create Class MyClass.");
07 }
08
09 public MyClass(int Value){
10 this(); //调用另一个构造器
11 System.out.println("Class MyClass(Value)");
12 value = Value;
13 }
14
15 public void draw(){
16 System.out.println("MyClass draw()");
17 }
18
19 public boolean equals(MyClass c) {
20 return (this.value == c.value);
21 super.equals(
22 }
23 }
24
25 class MyClassA extends MyClass {
26 public void draw() {
27 System.out.println("MyClassA draw()");
28 super.draw();
29 }
30 }
31
32 public class ClassTest {
33 public static void main(String[] args){
34 MyClass class1 = new MyClass();
35 MyClass class2 = new MyClass(120);
36
37 class1.value = 120;
38 //class2.value = 120;
39
40 System.out.println("class1 == class2 :" +(class1 == class2));
41 System.out.println("class1.equals(class2):" + class1.equals(class2) );
42 System.out.println("Test OK!");
43
44 MyClassA class3 = new MyClassA();
45 class3.draw();
46 }
47 }
48
49
运行结果:
Create Class MyClass.
Create Class MyClass.
Class MyClass(Value)
class1 == class2 :false
class1.equals(class2):true
Test OK!
Create Class MyClass.
MyClassA draw()
MyClass draw()
{以上内容是本人编写,如有不同意见,请留言}
- override 与 overload 的区别+例子
- override与overload的区别
- overload与override的区别
- override与overload的区别
- override 与overload的区别
- override 与overload 的区别
- OverLoad与override的区别
- Overload与Override的区别
- Overload与Override的区别
- override与overload的区别
- overload与override的区别
- override与overload的区别
- override 与overload 的区别
- overload与override的区别
- override 与overload 的区别
- Overload 与 Override 的区别
- overload与override的区别
- overload与override的区别
- J2EE设计模式好处
- Eclipse 3.2.x下SWT/JFace开发设置初步
- override与overload的区别
- 可拖动窗口的JS实现
- GPU编程入门(四)
- override 与 overload 的区别+例子
- mfc中控件更随窗体变化而变化1
- 急急急!!!关于用循环输出ArrayList中对象问题
- spring + hibernate 数据话持久层
- 关键字技术——我只可以这样做
- 照片
- JAVA程式師面試32問(含答案)
- Spring、Hibernate和JBoss
- Java面试题和答案