有些情况下,对象的同一种行为可能存在多种实现过程
例如:人对象的吃行为,吃饭和吃药的过程就存在差异
到底采用那种形式,需要取决于调用者给定的参数
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;
}
}
右侧赞助一下 代码改变世界一块二块也是爱
浙公网安备 33010602011771号