객체의 생성과 사용
•
클래스명 변수명;
◦
클래스의 객체를 참조하기 위한 참조변수 선언
•
변수명 = new 클래스명();
◦
클래스의 객체를 생성 후, 객체의 주소를 참조변수에 저장
•
Tv t; ⇒ Tv클래스 타입의 참조변수 t를 선언
◦
t = new Tv() ⇒ Tv 인스턴스를 생성한 후, 생성된 Tv인스턴스의 주소를 t에 저장
•
예제
// TV 클래스
public class Tv {
// Tv의 속성 (멤버변수)
String color; // 색상
boolean power; // 전원상태 (on / off)
int channel; // 채널
void power() { power = !power; } // TV를 켜거나 끄는 기능을 하는 메서드
void channelUp() { ++channel; } // TV의 채널을 높이는 기능을 하는 메서드
void channelDown() { --channel; } // TV의 채널을 낮추는 기능을 하는 메서드
}
public class ex6 {
public static void main(String[] args) {
Tv t; // TV 인스턴스를 참조하기 위한 변수 t 선언
t = new Tv(); // Tv 인스턴스 생성
t.channel = 7; // Tv 인스턴스의 멤버변수 channel의 값을 7로 함
t.channelDown(); // Tv 인스턴스의 메서드 channelDown() 을 호출
System.out.println("현재 채널은 " + t.channel + " 입니다.");
}
}
Java
복사
•
객체의 생성과 사용 예제
public class Ex6_2 {
public static void main(String[] args) {
Tv t1 = new Tv();
Tv t2 = new Tv();
System.out.println("t1의 channel값은 " + t1.channel + "입니다.");
System.out.println("t2의 channel값은 " + t2.channel + "입니다.");
t1.channel = 7;
System.out.println("t1의 channel값을 7로 변경하였습니다.");
System.out.println("t1의 channel값은 " + t1.channel + "입니다.");
System.out.println("t2의 channel값은 " + t2.channel + "입니다.");
}
}
Java
복사
오버로딩
•
정의: 한 클래스 내에 같은 이름의 메서드를 여러 개 정의하는 것을 ‘메서드 오버로딩(method overloading) 또는 간단히 ‘오버로딩(overloading)’ 이라 한다.
•
조건:
◦
메서드 이름이 같아야 한다.
◦
매개변수의 개수 또는 타입이 달라야 한다.
•
오버로딩 예제
class Calculator {
int add(int a, int b) {
System.out.print("int add(int a, int b) - ");
return a + b;
}
long add(int a, long b) {
System.out.print("long add(int a, long b) -");
return a + b;
}
long add(long a, int b) {
System.out.print("long add(long a, int b) - ");
return a + b;
}
long add(long a, long b) {
System.out.print("long add(long a, long b) - ");
return a + b;
}
int add(int[] a) {
System.out.print("int add(int[] a) - ");
int result = 0;
for (int i = 0; i < a.length; i++) {
result += a[i];
}
return result;
}
}
public class Ex6_10 {
public static void main(String[] args) {
Calculator cal = new Calculator();
System.out.println("cal.add(3, 3) 결과:" + cal.add(3, 3));
System.out.println("cal.add(3L, 3) 결과: " + cal.add(3L, 3));
System.out.println("cal.add(3, 3L) 결과: " + cal.add(3, 3L));
System.out.println("cal.add(3L, 3L) 결과: " + cal.add(3L, 3L));
int[] a = {100, 200, 300};
System.out.println("cal.add(a) 결과 : " + cal.add(a));
}
}
Java
복사
생성자
•
생성자는 인스턴스가 생성될 때 호출되는 ‘인스턴스 초기화 메서드’이다.
◦
생성자 역시 메서드처럼 클래스 내에 선언되며, 구조도 메서드와 유사하지만 리턴값이 없다.
◦
생성자의 조건
▪
생성자의 이름은 클래스의 이름과 같아야 한다.
▪
생성자는 리턴 값이 없다.
•
생성자 구조
클래스이름(타입 변수명, 타입 변수명, ...) {
// 인스턴스 생성 시 수행될 코드,
// 주로 인스턴스 변수의 초기화 코드를 적는다.
}
class Point {
Point() { // 매개변수 없는 생성자.
...
}
Point(int x, int y) { /// 매개변수가 있는 생성자.
...
}
Java
복사