演習5 Javaのオブジェクト指向のメソッドのオーバーロードおよび参照変形可能

/ *

  • オーバーロード方法:
  • 同じ名前の同じクラス内の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("没有传入数据");
		}
	}
}
公開された47元の記事 ウォンの賞賛1 ビュー1075

おすすめ

転載: blog.csdn.net/wisdomcodeinside/article/details/103999719