본문 바로가기

Java, Spring/07일

7일차 1

근데.. class / instance / object  구분이 되니?

  • class : 붕어빵틀, 설계도
  • instance : 실제 만들어진 붕어빵. 메모리(heap)에 만들어진 실체
  • object : (Class를 포괄하는) Instance..(90%는 인스턴스를 말하지)

메모리라 함은 자바에서는 세영역이지

  • heap : new로 만들어진 건 여기로 들어가(new
  • stack
  • static, class 혹은 static area

 

>인스턴스만드는데 new가 없다?

new가 없는게 아니라 감춰진 거지. 다른데 있는거야.

ex) cn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "oraclejava", "oraclejava");

getConnection이란 메서드 안에서 Connection을 new해서 리턴해준거야.

이렇게 숨겨놓는 이유는 뭐지?

  • Factory Pattern : 어느 한 곳에만 생성하고 싶을 때
  • Single turn Pattern : 한번 만들어서 프로그램 전체에서 같이 사용하고 싶을 때

>객체지향 프로그램의 특징

  • 정보은폐와 캡슐화
  • 상속
  • 다형성

 

연습

클래스 만들어 src/test.oop1/Point2D, src/test.oop1/PointTest (main메서드포함)

public class Point2D {
	public int x;
	public int y;
}
package test.oop1;

public class PointTest {
	public static void main(String[] args) {
		Point2D pt = new Point2D();
		pt.x = 10;
		pt.y=20;
		
		System.out.println("x= "+ pt.x);
		System.out.println("y= "+ pt.y);		
	}
}

캡슐화(내부를 감추고 기능으로 사용하지)

package test.oop1;

public class Point2D {
	
	private int x;
	private int y;
	
	public int getX() {
		return x;
	}
	public void setX(int x) {
		this.x = x;
	}
	public int getY() {
		return y;
	}
	public void setY(int y) {
		this.y = y;
	}
}
package test.oop1;

public class PointTest {
	public static void main(String[] args) {
		Point2D pt = new Point2D();
		pt.setX(100);
		pt.setY(200);
		
		System.out.println("x= "+ pt.getX());
		System.out.println("y= "+ pt.getY());		
	}
}

 

>Getter Setter 만들기 : alt-shift-s

 

‘바퀴를 두번 발명하지 마라.’ 재사용.. 상속..

Point3D를 만들어보자.

자바에서 상속은 확장이지. 그냥 가져다 쓰면 의미가 없지. 확장하는데 의미가 있다고.

new wizard : ctrl+n

package test.oop1;

public class Point3D extends Point2D{
	private int z;

	public int getZ() {
		return z;
	}

	public void setZ(int z) {
		this.z = z;
	}
}
package test.oop1;

public class PointTest {
	public static void main(String[] args) {
		Point3D pt = new Point3D();
		pt.setX(100);
		pt.setY(200);	
		pt.setZ(300);
		
		System.out.println("x= "+ pt.getX());
		System.out.println("y= "+ pt.getY());
		System.out.println("y= "+ pt.getZ());		
	}
}

 

상속이랑 항상 같이 다니는게 있어. 변이.. 다형성.

package test.oop1;

public class Point2D {
	
	private int x;
	private int y;
	
	public int getX() {
		return x;
	}
	public void setX(int x) {
		this.x = x;
	}
	public int getY() {
		return y;
	}
	public void setY(int y) {
		this.y = y;
	}
	
	public void print(){
		System.out.println("x= "+ this.x);
		System.out.println("y= "+ this.y);
	}
}

메서드 Override

package test.oop1;

public class Point3D extends Point2D{
	private int z;

	public int getZ() {
		return z;
	}

	public void setZ(int z) {
		this.z = z;
	}

	@Override
	public void print() {
		// TODO Auto-generated method stub
		super.print();
		System.out.println("z= "+ this.z);
	}	
}

package test.oop1;

public class PointTest {
	public static void main(String[] args) {
		Point3D pt = new Point3D();
		pt.setX(100);
		pt.setY(200);	
		pt.setZ(300);
		
		pt.print();
	}
}

'Java, Spring > 07일' 카테고리의 다른 글

7일차 2  (0) 2012.09.25
7일차 3  (0) 2012.09.25
7일차 4  (0) 2012.09.25
7일차 5  (0) 2012.09.25
7일차 6  (0) 2012.09.25