메서드
클래스 내부에 있는 함수
// [표현법]
반환형 메소드이름(매개변수){
함수에서 실행할 코드
}
예시
public class A_Method {
public static void main(String[] args) {
System.out.println("프로그램 시작");
hiEveryone(12);
hiEveryone(13);
System.out.println("프로그램 끝");
}
public static void hiEveryone(int age) {
System.out.println("좋은 아침입니다.");
System.out.println("제 나이는 " + age + "입니다.");
}
}
메서드 오버로딩
자바에서 한 클래스 내에서 이미 사용하려는 이름과 같은 이름을 가진 메서드가 있더라도 매개변수의 개수 또는 타입이 다르면, 같은 이름을 사용해서 메서드를 정의할 수 있습니다. 한 클래스 내에 같은 이름이 메서드를 여러 개 정의하는 것을 "메서드 오버로딩" 또는 "오버로딩"이라고 합니다.
메서드 오버로딩 구분 요건은 아래와 같습니다.
- 메소드 이름이 같아야 한다.
- 매개변수의 개수, 타입 또는 순서가 달라야 한다.
- 반환 타입은 관계가 없다.
public class C_Method {
//메소드 오버로딩
//메소드의 이름이 동일해도 매개변수의 갯수 또는 타입이 다르면 메소드를 구분할 수 있다.
//단, 호출시점이 구분해서 호출할 수 있어야하므로 반환형이 다른 것은 아무 의미가 없다.
//자동형변환은 매개변수로 인자를 전달할 때도 동작하기 때문에 모호한 오버로딩을 하지 말자.
public static void main(String[] args) {
System.out.println(adder(5,10));
System.out.println(adder(5,13));
System.out.println(adder(5, "안녕"));
}
public static int adder(int num1, int num2) {
int addResult = num1 + num2;
return addResult;
}
public static double adder(double num1, double num2) {
double addResult = num1 + num2;
return addResult;
}
public static int adder(int num1, String ch) {
String addResult = num1 + ch;
return 0;
}
}
클래스
클래스는 객체 지향 프로그래밍의 기본적인 개념 중 하나입니다. 클래스는 프로그램에서 사용될 객체의 틀을 정의하며, 객체를 생성하기 위한 설계도 역할을 한다. 클래슨 여러 가지 멤버 변수와 메서드를 포함하고 이들을 적절히 구성하여 객체의 동작을 정의합니다.
클래스의 구조
접근제한자 class 클래스명{
//필드영역(사용할 데이터를 선언하는 영역)
//생성자 영역 (데이터를 초기화해주기 위한 특수목적의 메서드를 정의하는 영역)
//메서드 영역 (클래스의 기능을 정의하느 영역)
}
예시
1)
package F.Object.ex1;
public class Student {
//필드
String name; //이름
int age; //나이
double height; //키
//메서드
public void myInfo(){ //내 정보를 출력하는 기능
int age = 20;
System.out.println("안녕하세요. 저는 " + this.age + "살의" + name + "입니다.");
}
package F.Object.ex1;
public class Run {
public static void main(String[] args) {
//객체를 생성할 때
//class명 객체이름;
Student choi; //choi라는 참조변수 생성
choi = new Student();
Student kim = new Student();
choi.name = "홍길동";
choi.age = 55;
kim.name = "홍길순";
kim.age = 60;
choi.myInfo();
kim.myInfo();
}
}
2)
package F.Object.ex2;
public class BankAccount {
int balance = 0;
public int deposit(int amount) {
balance += amount;
return balance;
}
public int withdraw(int amount) {
balance -= amount;
return balance;
}
public int checkMyBalance() {
System.out.println("잔액 : " + balance);;
return balance;
}
public int checkMyBalance(BankAccount ref) {
System.out.println("잔액 : " + ref.balance);;
return ref.balance;
}
}
package F.Object.ex2;
public class Run {
public static void main(String[] args) {
// BankAccount ref1 = new BankAccount();
// BankAccount ref2 = ref1;
//
// System.out.println(ref1.deposit(3000));
// ref2.deposit(2000);
//
// ref1.checkMyBalance();
// ref1.checkMyBalance();
BankAccount ref1 = new BankAccount();
BankAccount ref2 = new BankAccount();
ref1.deposit(10000);
ref1.withdraw(2000);
ref2.checkMyBalance(ref1);
}
}
3)
package F.Object.ex3;
//이름, 나이, 수학, 영어, 국어점수를 가지고있는 학생 클래스
public class Student {
//필드
String name; //이름
int age; //나이
double mathScore; //수학점수
double enScore; //영어점수
double koScore; //국어점수
//생성자
//객체를 초기화해주기 위한 특수목적 메서드
//개발자가 생성해주지 않으면 기능이 없는 디폴트 생성자가 컴파일 과정에서 생성됨.
//생성자는 class와 이름이 동일하다.
//반환형이 존재하지 않는다.
//alt+shift+s 단축키 이용가능
public Student() {
super();
}
//생성자도 메서드 오버로딩이 가능하다.
//생성자는 alt + shift + s -> o
public Student(String name, int age, double mathScore, double enScore, double koScore) {
super();
this.name = name;
this.age = age;
this.mathScore = mathScore;
this.enScore = enScore;
this.koScore = koScore;
}
//메서드
public void myInfo(){ //내 정보를 출력하는 기능
int age = 20;
System.out.println("안녕하세요. 저는 " + this.age + "살의" + name + "입니다.");
}
}
package F.Object.ex3;
public class Run {
public static void main(String[] args) {
Student st1 = new Student();
Student st2 = new Student("홍길동", 20, 100, 95, 50);
st2.mathScore = -50;
st1.myInfo();
st2.myInfo();
}
}
'Study Java' 카테고리의 다른 글
접근제한자 (5) | 2025.01.16 |
---|---|
형변환과 배열 (6) | 2025.01.14 |
Java 프로젝트 생성 (2) | 2025.01.07 |
Java, eclipse 설치 (5) | 2025.01.07 |