/ *
- オーバーロード方法:
- 同じ名前の同じクラス内の1方法は、それらがパラメータまたはパラメータ・タイプの異なる数を有することを条件とする、1つ以下可能にするために存在します
- (二つの異なる同じ:同じクラス、同じ名前、異なるパラメータリスト)
- 2過負荷特性:かかわらず、戻り値の型が、唯一のパラメータリストのパラメータリストは異なっていなければならない(パラメータおよびパラメータ・タイプの数)
- 呼び出されると、メソッドは、異なる方法を区別するためのパラメータリストに従って
- 法で許可剤、戻り型、変数名の形状パラメータ、メソッド本体から独立している:3が過負荷か否かを判断します。
- 2つだけは同じ異なっ分析しています
- 4メソッドを呼び出すことによってオブジェクトが、どのようにメソッド呼び出しが何であるかを判断する場合には:
- メソッド名を参照してください。
- パラメータリストを参照してください。
- 例:
- INT追加(int型のx、int型Y){//計算二つのパラメータと
- X + Yを返します。
- }
- int型の追加(int型のx、int型のy、int型Z){//計算三つのパラメータと
- X + Y + Zを返します。
- }
- ダブル追加(ダブルX、ダブルY){//フロート計算二つのパラメータ、および
- X + Yを返します。
- }
* /
/ *
- パラメータの可変数
- javaSE5.0可変引数(引数の数が可変)メカニズムを提供します
- エネルギーと直接引数マッチパラメータを複数定義することができます。簡単な方法に渡される引数の変数番号を使用することができ
- JDK5.0は、以前に同じタイプの複数の変数を渡し、配列パラメータを定義するために使用しました
- パブリック静的ボイド試験(int型A、スティング[]書籍){}
- パラメータJDK5.0の可変数を定義した後に、同じタイプの複数の変数を渡します
- 公共の静的な無効テスト(int型A、スティング...図書){}
- リファレンス変形可能な利用
- 1、フォーマット... :(データ型変数名)
- 図2は、パラメータメソッド呼び出しの可変数がある場合、渡されるパラメータの数は0、1またはそれ以上であってもよいです。
- 図3に示すように、オーバーロードされたメソッドのうち、同一のこのクラスのメソッドは、パラメータ設定とパラメータ名のプロセス変数の数。
- このクラスのメソッドの同じ名前のメソッドとの間の可変パラメータの数は、同じパラメータ型配列は、2つの共存することができない、重い負荷を構成しない4、
- 5、プロセス、最大で1つのパラメータの可変数、および引数リストの末尾に声明。(フロント、または変形可能な複数のパラメータ場合、コンパイラ後の入力パラメータは、パラメータを変更することができる変形可能なパラメータかどうか属する配列とはこのような問題を知りません)
* /
package com.atguigu.contact;
import java.util.*;
public class Object5 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
//测试重载
Count c = new Count();
c.sum(1, 2);//输出1
//注意:如果sum(int i,int j)方法被注释掉,则因为自动类型提升会执行
//sum(double i,double j),输出2
OverLoad o = new OverLoad();
o.MathTest(11, 22);
o.Max(3.1, 1.2, 9.2);
//测试可变形参
Argu a = new Argu();
a.show("AA");
a.show("AA","BB");
//a.show();//两个方法都用可变形参,编译器不确定使用哪个方法
a.show(1);
a.show(23,56,12,45);
a.show(new int[] {});//可变形参方法可以直接填入数组
}
}
class Count{
public void sum(int i,int j) {
System.out.println("1");
}
public void sum(double i,double j) {
System.out.println("2");
}
public void sum(int i,double j) {
System.out.println("3");
}
public void sum(double j,int i) {
System.out.println("4");
}
public void sum() {
System.out.println("5");
}
// public int sum(int i,int j) { //与是否返回无关,不能构成重载
// return 0;
// }
// public void sum(int m,int n) { //与形参名无关,不能构成重载
// System.out.println("5");
// }
// private void sum(int i,int j) {//与修饰符无关,不能构成重载
// System.out.println("5");
// }
// private void sum(int i,int j) {//与方法体无关,不能构成重载
// System.out.println();
//}
}
class OverLoad{
public void MathTest(int i) {
System.out.println(i * i);
}
public void MathTest(int i,int j) {
System.out.println(i * j);
}
public void MathTest(double i) {
System.out.println(i);
}
public void Max(int i,int j) {
int max;
max = (i >= j)?i:j;
System.out.println(max);
}
public void Max(double i,double j) {
double max;
max = (i >= j)?i:j;
System.out.println(max);
}
public void Max(double i,double j,double l) {
double max;
max = (i >= j)?i:j;
max = (max >= l)?max:l;
System.out.println(max);
}
}
class Argu{
public void show(String s) {
System.out.println("传入了一个数据" + s);
}
public void show(String ... s ) {//实际还是创建一个String类型的数组,数组名s,只是语法改变
System.out.println("又传入了一个数据" + s);//会输出数组s 的首地址值。在方法使用时输入完变量后确定数组地址值与长度
for (int i = 0; i < s.length; i++) {//遍历输出,其他功能与数组的操作相同
System.out.println("又传入了一个数据" + s[i]);
}
}
// public void show(String[] s) { //与可变形参重复,不构成重载
// System.out.println("又传入了一个数据" + s);
// }
public void show(int s) {
System.out.println("传入了一个数据" + s);
}
public void show(int ... s) {
int sum = 0;
if(s.length != 0) {
for (int i = 0; i < s.length; i++) {
sum += s[i];
}
System.out.println("传入数据总和是" + sum);
}else {
System.out.println("没有传入数据");
}
}
}