반응형
# Object 클래스
- 모든 클래스의 root 클래스
- 상속 관계에서 최상위 클래스이다. (최초의 부모)
- Object 클래스를 활용하여 프로그램을 유연하게 만들 수 있다.
## 클래스 설계 시 기본적으로 생략되는 곳 3가지.
import java.lang.*; // 생략_1
public class A extends Object { // extends Object 생략_2
public A() { // 생략_3
super();
}
public void display() {
System.out.println("A");
}
@Override
public String toString() {
return "재정의된 메서드.";
}
}
## Object를 이용한 객체 생성
Object obj = new A();
obj.display();
((A)obj).display();
System.out.println(obj.toString());
## toString()
- Object 클래스의 메서드 중 하나.
- 재정의를 하지 않았을 경우 번지 출력.
- 재정의 시 재정의된 메서드 실행.
## Object 클래스 (실습)
import java.lang.*;
public class A extends Object {
public A() {
super();
}
public void display() {
System.out.println("A");
}
@Override
public String toString() {
return "재정의된 메서드.";
}
}
public class TPC30 {
public static void main(String[] args) {
A a = new A();
a.display();
// 1. toString() 메서드 재정의 한 경우.
//System.out.println(a.toString()); //재정의 된 메서드 출력
System.out.println(a); // 재정의 된 메서드 출력
// 2. toString() 메서드 재정의 하지 않은 경우.
System.out.println(a); // 번지 출력 : kr.poly.A@279f2327
Object obj = new A(); // UpCasting
((A)obj).display();
System.out.println(obj.toString());
}
}
# Object 클래스 활용 (다형성 인수, 다형성 배열)
- Object 클래스와, A, B 라는 클래스가 존재하고 상속관계이며, A와 B 클래스에 go() 메서드가 존재할때
// UpCasting
Object obj1= new A();
Object obj2= new B();
// DownCasting
A a = (A)obj1;
B b = (B)obj2;
## Object 클래스 다형성 인수
display(new A());
display(new B());
일때..
public void display(Object obj) {
if (obj instanceof A) {
((A)obj).go();
} else {
((B)obj).go();
}
}
## Object 클래스 다형성 배열
Object[] obj = new Object[2];
obj[0] = new A();
obj[1] = new B();
for ( int i = 0; i < obj.length; i++ ) {
if(obj[i] instanceof A) {
((A)obj[i]).go();
} else {
((B)obj[i]).go();
}
}
## Object 클래스 활용 (실습)
public class A {
public void go() {
System.out.println("A_go 메서드");
}
}
public class B {
public void go() {
System.out.println("B_go 메서드");
}
}
- Object 클래스 다형성 인수
public class TPC31 {
public static void main(String[] args) {
A a = new A();
display(a);
B b = new B();
display(b);
}
private static void display(Object obj) { // 다형성 인수
if (obj instanceof A) {
((A)obj).go();
} else {
((B)obj).go();
}
}
}
- Object 클래스 다형성 배열
public class TPC32 {
public static void main(String[] args) {
Object[] obj = new Object[2]; // 다형성 배열
obj[0] = new A();
obj[1] = new B();
for(int i = 0; i < obj.length; i++) {
if (obj[i] instanceof A) {
((A)obj[i]).go();
} else {
((B)obj[i]).go();
}
}
printGo(obj);
}
private static void printGo(Object[] obj) {
for(int i = 0; i < obj.length; i++) {
if (obj[i] instanceof A) {
((A)obj[i]).go();
} else {
((B)obj[i]).go();
}
}
}
}
반응형
'인프런 강의 학습 > Java TPC' 카테고리의 다른 글
Java TPC_19일차 패키지 / 자바에서 제공하는 API 접근 및 활용 (0) | 2022.01.25 |
---|---|
Java TPC_18일차 객체지향 프로그래밍의 3대 특징 / 다형성 / 추싱클래스와 인터페이스 (0) | 2022.01.24 |
Java TPC_16일차 추상 클래스 / 인터페이스 / 인터페이스(규약)와 JDBC의 관계 / 인터페이스의 상속관계 (0) | 2022.01.23 |
Java TPC_15일차 다형성 활용 (다형성인수, 다형성배열) (0) | 2022.01.21 |
Java TPC_14일차 객체 형 변환 (0) | 2022.01.19 |