6월 25일 자바(오버라이딩 생성자 tostring)

2010. 6. 25. 15:332010년/6월


package net.itisn;

class Car
{
  String model;
  String color;
  
}
public class CarTest {

  public static void main(String[] args) {
    Car mycar01 = new Car();
    System.out.println("클래스이름 : "+mycar01.getClass());//getClass가 상속
    System.out.println("해쉬코드 : "+mycar01.hashCode()); //해쉬코드상대적인 위치 (클래스위치)
    System.out.println("해쉬코드 : "+Integer.toHexString(mycar01.hashCode())); //16진수로
    System.out.println("객체문자열 : "+mycar01.toString());
    
    Car mycar02 = new Car();
    System.out.println("클래스이름 : "+mycar02.getClass());//getClass가 상속
    System.out.println("해쉬코드 : "+mycar02.hashCode()); //해쉬코드상대적인 위치 (클래스위치)
    System.out.println("해쉬코드 : "+Integer.toHexString(mycar02.hashCode())); //16진수로
    System.out.println("객체문자열 : "+mycar02.toString());
  }

}
클래스를 생성하게 되면 getClass()를 이용해서 알아낼수있다.
그리고 해쉬코드같은경우는  말그래도 고유로 저장되는 주소위치라고보면된다.
보는방법은 hashcode()이다.
그리고 이 주소위치를 16진수로 보는법은 Integet.toHexString(int i);를
통해서 볼수있고 toString으로 클래스와위치함께 볼수있다.



================================================================
================================================================
package net.itisn;

import java.util.Date;
public class DateTest {

  
  public static void main(String[] args) {
    Date date = new Date();
    int hours,min; 
    System.out.println(date.toString());
    hours =date.getHours();
    min  = date.getMinutes();
    System.out.println(hours+" : "+min);

  }

}
다음 시계를 찍는경우이다
import java.util.Date; 안에 날짜에 모든것이 들어있고 안에 함수로
date.toString()에 날짜가 있으며  하나씩 가져오기 위해서
getHours(), getMinutes()가 있다.

하지만 바로 사용하지 못하고 다른곳에 대입해서 쓰는데 위코드도 어떻게 보면 강제적으로 한다 메소드를 통해서 가져와야하는데...



일단 출력은 된다 뭐 그런거다.

===================================================================
오버라이딩
===================================================================
package net.itisn;

class Car
{
  String model;
  String color;
  public Car(String model,String color)
  {
    super(); //상위 클래스 생성자 호출
    this.model =model;
    this.color = color;
  }  
  public Car()
  {
    super();
  }
  @Override
  public String toString() {
    // TODO Auto-generated method stub
    //return super.toString();
    return "모델명:" + model + "\t 색상 :" + color;
    
  }
  
}
public class CarTest2 {

  public static void main(String[] args) {
    Car mycar01 = new Car("K5","실버");
    System.out.println(mycar01);
    
  }

}
쉽게 설명하면 쉽게할수 있고 어렵게하면 조금 어려운것이 오버라이딩이다
기본적인 함수가 이름이 같을때 인자에 따라서 함수가 다르게 사용되는경우인데
자바에서 클래스를 생성하고 그에대한 생성자로 인자있는것과 없는것에 대한  실행인데 위와 같은경우 생성사 Car()와 Car(String model, String color)에 대해서 실행방법인데 그리고 객체를 생성할때 new Car("K5","실버");를 통해서 인자있는 생성자이다.
이클립스에서 이오버라이딩에해서  쉽게 구하는법이 있는데


오른쪽 클릭후


Car 생성자 후에 toString으로
@Override
  public String toString() {
    // TODO Auto-generated method stub
    //return super.toString();
    return "모델명:" + model + "\t 색상 :" + color;
    
  }
원래 return super.toString(); 
클래스명과 해쉬코드가 나오지만 약간 꼼수를 써서
return "모델명:" + model + "\t 색상 :" + color;로
생성될 인자값의 첫값과 둘째값을 출력되게 만들었다.