Basic/etc(33)
-
객체의 생성, 생성자
1. 참조(reference) 타입 자바의 자료형은 크게 기본형(boolean, byte, short, char, int, long, float, double)과 참조 타입으로 분류할 수 있다. 참조 타입은 new 연산자를 통해서 heap영역에 생성되고 참조변수를 통해서 참조되는 자료형들을 의미한다. 자바에서 참조 타입으로는 배열, 클래스, 인터페이스, enum, 애노테이션이 있다.(배열은 이미 설명했고 나머지들은 이후 단원에서 설명하겠다) 자바에서 참조 타입들이 생성되고 메모리에 만들어지는 방법은 다음과 같다. Car c; // Car클래스 타입의 변수 c를 선언하면 메모리 스택(run time stack)에 Car타입의 참조변수 c가 생성된다. // 이것은 참조변수 c를 선언한 것이지 Car의 객체를..
2014.11.10 -
싱글톤 패턴
싱글톤은 하나의 인스턴스만 생성되는 클래스이다. 생성자의 접근자를 private으로 정의하고, 인스턴스를 리턴하는 public static 팩토리 메서드를 제공함으로써 외부에서 이 클래스의 인스턴스 생성을 가능하도록 한다. getInstance()내부에서 하나의 인스턴스만 생성되도록 구현한다. 생성자가 private을 정의 되기때문에 서브클래스를 가질 수 없다. public class User { private static User user; private User(){} public static User getInstance(){ if(user == null){ user = new User(); } return user; } } Multi Thread 환경인 경우에는 다음과 같이 수정이 필요하다. pu..
2014.11.10 -
extends 와 implements의 차이?
class A extends B 라고 하면 A는 B라는 클래스를 상속 받아서 +a 시키겠다는 뜻이구요 class A implements C 라고 하면 A는 C라는 인터페이스를 구현하겠다~ 라는 뜻입니다. 한마디로, 클래스를 상속받느냐... ? 인터페이스를 구현하느냐...? 의 차이입니다. ▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧▧ 우선, extends는 일반 클래스와 abstract클래스 상속에 사용되고, implement는 interface상속에 사용됩니다. 그럼, 상속이라는것은? 나의 부모가 부자라면, 내가 부모로부터 상속 받는 다면 나도 부자가 됩니다. 결국, 다른것으로부터 그들의 기능을 빌려다 쓴다고 생각하시면 됩니다. 자바에서의 상속은 2가지 형태가 있습니..
2014.11.09 -
추상클래스와 인터페이스
1. 추상 클래스 상속관계에서 "자동차"라는 클래스를 상속받은 "그랜져"와 "모닝"이라는 클래스가 있다. 구현되는 코드에서는 그랜저 객체나 모닝 객체만을 사용한다고 했을때 자동차라는 객체를 만들지 못하게 하는 방법은 없을까? 자바언어에서는 클래스 선언시 abstract class라고 해주면 그 클래스의 객체를 만들 수 없다. abstract class Car{} class Grandeur extends Car{} class Morning extends Car{} Car c = new Car(); // 컴파일 에러! 추상클래스는 객체를 만들수는 없지만 "Car c = new Grandeur();"같이 부모클래스형으로 참조변수(레퍼런스)로는 사용될 수 있다.(다형성) 이것이 추상클래스의 가장 중요한 역할 이..
2014.11.09 -
접근제어자와 캡슐화
1. 클래스 접근 제어자 생략(default) : 같은 패키지의 클래스에서만 객체(인스턴스)생성이 가능하다. public : 다른 패키지에서 객체(인스턴스)의 생성이 가능하다. 2. 멤버에 접근 제어자 private : 같은 클래스 내에서만 접근이 가능, 외부객체 접근 불가(this키워드 사용하는 것들), 상속되지도 않는다. 생략(default) : 접근제어자가 없는 형태로 같은 패키지 내에서만 접근이 가능. protected : 같은 패키지 내에서 사용가능하며, 다른 패키지라도 상속을 받은 클래스는 접근 가능. public : 모든 객체에서 접근 가능. ※ 입문자의 경우 default 사용은 피하고 protected는 객체지향적 설계에서 사용이 많이 되니 입문자는 개념만 이해하고, 특별한 경우가 아니면..
2014.11.09 -
객체지향? 추상화?
1. 객체지향프로그래밍(OOP : Object-Oriented Programming) 1970년에 Brian Kernighan(브라이언 커니언)과 Dennis Ritchie (데니스 리치)는 운영체제를 만들 목적으로 C 언어를 만들었다. 이렇게 탄생한 C 언어는 아주 단순하고 유연하여 여러가지 프로그램들에 사용되게 되었고 지금(2011년)까지 가장 인기있는 언어들중 하나가 되었다. 하지만 C언어는 프로시저(함수)기반의 언어라는 특징 때문에 프로그래머들이 C언어로 프로그램을 설계할 때 먼저 데이터를 기술하고 나서 그 데이터를 사용하고 조작하는 프로시저(함수)를 만들어야만 했다. C언어를 사용하는 프로그래머들은 데이터와 그 데이터를 조작하는 프로시저(함수)를 하나로 묶어서 설계하면 프로그램을 더욱 명확하고 ..
2014.11.09