• 方法重载


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

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

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

    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;
    		}
    }
    

      

  • 相关阅读:
    记录一次简单的优化 力扣 1790. 仅执行一次字符串交换能否使两个字符串相等
    spring boot mysql jdbcTemplate
    mysql 窗口函数
    奖牌榜排序
    http://mybatis.org/dtd/mybatisgeneratorconfig_1_0.dtd 标红
    windows nginx 初体验
    216.面试题上传下载大文件django
    flutter使用svg图标
    Vue3的正确写法
    VSCode C++项目点击Build报[rollbar]错误
  • 原文地址:https://www.cnblogs.com/ht955/p/16296285.html
Copyright © 2020-2023  润新知