728x90
반응형
메소드 오버로딩은 자바 프로그래밍에서 중요한 개념으로, 한 클래스 내에 같은 이름의 메소드를 여러 개 정의하는 기법입니다.
1. 오버로딩의 조건
1) 메소드 이름: 오버로딩된 메소드들은 동일한 이름을 가져야 합니다.
2) 매개변수: 매개변수의 개수, 타입, 또는 순서가 달라야 합니다.
3) 반환 타입: 반환 타입은 오버로딩을 구분하는 기준이 되지 않습니다.
2. 오버로딩의 장점
1) 코드 재사용성: 유사한 기능을 하는 메소드들을 하나의 이름으로 통일할 수 있습니다.
2) 가독성 향상: 여러 메소드를 각각 다른 이름으로 정의하지 않아도 되어 코드의 가독성이 높아집니다.
3) 유지보수 용이성: 비슷한 기능의 메소드들이 하나의 이름으로 모여있어 유지보수가 쉬워집니다.
4) 다형성 구현: 같은 이름의 메소드를 호출하더라도 매개변수에 따라 다른 동작을 수행할 수 있습니다.
5) 메소드 이름 기억 용이: 개발자가 기억해야 할 메소드 이름의 수가 줄어듭니다.
6) 기능 예측 용이: 동일한 이름을 사용함으로써 메소드의 기능을 쉽게 예측할 수 있습니다.
3. 기본 구문
class Test { void something() { System.out.println("No parameters"); } void something(int i) { System.out.println("One integer parameter"); } void something(int i, int j) { System.out.println("Two integer parameters"); } void something(int i, double d) { System.out.println("Integer and double parameters"); } } |
4. 예시
(1)예시
import entety.Bus; import entety.Student; public class TakeTrans { public static void main(String[] args) { Student s1 = new Student( "홍길동" , 5000); Student s2 = new Student( "김나나" , 10000); Bus bus100 = new Bus(100); // 임의 버스 번호 100번 생성 s1.takeBus(bus100); s1.showInfo(); bus100.showInfo(); } } |
Bus bus100 = new Bus( ); // 공란으로 진행할경우 오류가 발생할수 있습니다. 이럴경우 Bus 클래스에 Dufalt값을 설정해줍니다. Bus bus100 = new Bus(100); |
package entety; public class Student{ public String studentName; public int grade; public int money; public Student(String studentName, int money) { this.studentName = studentName; this.money = money; } public void takeBus(Bus bus) { // Bus bus = Bus bus100 '100' 이 생략되어 있습니다. bus.take(1000); // 버스 요금 this.money -= 1000; } public void takeSubway(Subway subway) { subway.take(1500); // 지하철 요금 this.money -= 1500; } public void showInfo() { System.out.println(studentName + "님의 남은 돈은" + money + "입니다." ); } } |
(2) 생성자 생성방법
package entety; public class Bus { int busNumber; int passengerCount; int money; public Bus(int busNumber) { this.busNumber = busNumber; } public Bus(String lineNumber, int passengerCount, int money) { this.busNumber = busNumber; this.money = money; this.passengerCount = passengerCount; } public void take(int money) { this.money +=money; // this.money = this.money + money passengerCount++; // passengerCount + passengerCount +1 } public void showInfo() { System.out.println("버스 " + busNumber + "번의 승객은 " + passengerCount + "명이고,수입은 "+money + "입니다." ); } } |
package entety; public class Subway { String lineNumber; int passengerCount; int money; public Subway(String lineNumber) { this.lineNumber = lineNumber; } public Subway(String lineNumber, int passengerCount, int money) { this.lineNumber = lineNumber; this.passengerCount = passengerCount; this.money = money; } public void take( int money){ this.money += money; // this.money = this.money + money passengerCount ++; // passengerCount + passengerCount +1 } public void showInfo() { System.out.println(lineNumber + "의 승객은 " + passengerCount + "명이고, 수입은 " + money + "입니다."); } } |
728x90
반응형
'JAVA > 이론' 카테고리의 다른 글
30. [ JAVA ] 상속 : 직속 (0) | 2024.12.16 |
---|---|
29. [ JAVA ] 상속 : extends (0) | 2024.12.16 |
25. [ JAVA ] Gette/ Setter 의미와 사용 이유 (0) | 2024.12.12 |
22. [ JAVA ] 클래스(Class)와 객체(Instance) (0) | 2024.12.10 |
21. [ JAVA ] 함수 (fanction) (1) | 2024.12.10 |