赞助

有些情况下,对象的同一种行为可能存在多种实现过程

例如:人对象的吃行为,吃饭和吃药的过程就存在差异

到底采用那种形式,需要取决于调用者给定的参数

public class Person {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

	}
	public void eat(食物 a) {
		
	}
	public void eat(药物 b) {
			
		}
	public void eat(口香糖 c) {
		
	}

}

  重载(Overload):一个类中定义多个相同名称的方法

要求:

方法名称相同

参数类型不同(类型,个数,顺序)

与访问修饰符,返回值类型无关

public class Person {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Calculator cla1 = new Calculator();
		System.out.println( cla1.add(5.6, 3.4) );
		System.out.println( cla1.add(5.6, 3.4,3.4) );
	}

}

class Calculator{
	public double add(double num1,double num2) {
		return num1 + num2;
	}
	public double add(double num1,double num2,double num3) {
		return num1 + num2 + num3;
	}
		
}

  带有重载的方法时,需要根据传入的实参去找到与之匹配的方法

好处:屏蔽差异使用,灵活方便

package com.ht.leader.oop;

public class Person {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Students stu1 = new Students();
		stu1.name ="ht";
		stu1.age = 12;
		stu1.sex = '男';
		stu1.score = 1.2;
		
		Students stu2 = new Students();
		stu2.name ="htasd";
		stu2.age = 11;
		stu2.sex = '男';
		stu2.score = 1.22;
		
		Students stu3 = new Students();
		stu3.name ="hsat";
		stu3.age = 22;
		stu3.sex = '男';
		stu3.score = 1.21;
		
		Teachar t1 = new Teachar();
		double reult =  t1.totalScore(stu1.score,stu2.score);
		System.out.println(reult);
		double[] score = {stu1.score,stu2.score,stu3.score};
		double reult2 = t1.totalScore(score);
		System.out.println(reult2);
	}

}

class Students{
	String name;
	int age;
	char sex;
	double score;
}

class Teachar{
	String name;
	int age;
	char sex;
	double salary;
	
	public double totalScore(double score1,double score2) {
			return score1 + score2;
		}
	
	public double totalScore(double[] score) {
			double num = 0.0;
			for(int i = 0; i < score.length ; i++) {
				num += score[i];
			}
			return num;
		}
}

  

posted on 2022-05-21 22:38  Tsunami黄嵩粟  阅读(36)  评论(0)    收藏  举报