重载与重写重载与重写
方法的重载(overload)和重写(override)的异同:
1,重载(Overloading)
(1) 方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在,具有不同的参数个数/类型。 重载Overloading是一个类中多态性的一种表现。
(2) Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。
调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法, 这就是多态性。
(3) 重载的时候,方法名要一样,但是参...
重载与重写
方法的重载(overload)和重写(override)的异同:
1,重载(Overloading)
(1) 方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在,具有不同的参数个数/类型。 重载Overloading是一个类中多态性的一种表现。
(2) Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。
调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法, 这就是多态性。
(3) 重载的时候,方法名要一样,但是参数类型和个数不一样,返回值类型可以相同也可以不相同。但是返回值不能作为重载的判定条件。(无法以返回型别作为重载函数的区分标准)
下面是重载的例子:
?
package com.demo.sw.test; 2
3
public class OverLoadClass { 4
5
public void OverLoadMethod(){ 6
7
} 8
9
public void OverLoadMethod(String s){ 10
11
} 12
13
public void OverLoadMethod(int n, String s){ 14
15
} 16
17
public String OverLoadMethod(String s,int n){ 18
19
return null; 20
} 21
22
} 23
2,重写(Overriding) (1) 父类与子类之间的多态性,对父类的函数进行重新定义。
如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方
法被重写 (Overriding)。
在Java中,子类可继承父类中的方法,而不需要重新编写相同的方法。但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。
(2) 若子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数表,则新方法将重写原有的方法。如需父类中原有的方法,可使用super关键字,该关键字引用了当前类的父类。 (3) 子类函数的访问修饰权限不能少于父类的;
下面是重写的例子:
?
package com.demo.sw.test; 2
3
public class Parent { 4
5
public void say(){ 6
System.out.println("I am the Parent."); 7
} 8
9
public String sayHello(){ 10
return "Hello, I am a man."; 11
} 12
13
public String sayHello(String name){ 14
return "Hello " + name + " ."; 15
} 16
17
public void say(int n){ 18
19
System.out.println("what you input in the method 20 is :" + n); 21
} 22
/* 23
public void say(byte b){ 24
25
System.out.println("what you input in the method 26 is :" + b); 27
} 28
*/ 29
30
private static final String sayH(){ // 这里的 private 31 不能改成 public 类型的,因为子类不能重载这样的方法 32
return "hhh";
}
}
?
package com.demo.sw.test; 2
3
public class Child extends Parent { 4
5
public void say(int n){ 6
n++; 7
System.out.println("After Override The Result 8
is :" + n); 9
10
} 11
/* 12
public void say(byte b){ 13
b++; 14
System.out.println("After Override The Result 15 is :" + b); 16
} 17
*/ 18
public void say(){ 19
System.out.println("I am the Child Override My 20 Parent's Method."); 21
} 22
23
public String sayHello(){ 24
return "Hello, I am a boy."; 25
} 26
27
public String sayHello(String name){ 28
return "Hello, " + name + " ."; 29
} 30
31
public static final String sayH(){ 32
return "this is the static final method."; 33
} 34
35
public static final String sayH(String name){ 36
return "this is the static final method and you 37 input is :" + name; 38
}
}
?
package com.demo.sw.test; 2
3
public class TestOverride { 4
public static void main(String[] args) { 5
6
Parent p = new Parent(); 7
//p.say(); 8
9
Parent pc = new Child(); 10
pc.say(); 11
pc.say(1); 12
pc.say((byte)1); 13
14
Child chld = new Child(); 15
//chld.say(); 16
System.out.println(chld.sayH()); 17
System.out.println(Child.sayH()); 18
System.out.println(Child.sayH("fff")); 19
20
} 21
22 } 23
本文档为【重载与重写】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。