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()


{以上内容是本人编写,如有不同意见,请留言} 
 
原创粉丝点击