반응형

# 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();
			}
		}
	}
}
반응형

+ Recent posts