[JAVA]

[JAVA]9월 18일 상속, 부모클래스, 자식클래스, Singleton패턴

jsm9301 2015. 9. 18. 10:29

* 상속

코드를 재사용하기위한 중요한 기법입니다.(공통점을 찾아서 묶어야됨.)

ex)부모 클래스 (Car) 자식클래스 (superCar) 상속 하려면

public class superCar extends Car;   << Car클래스 상속 받음.

이제 슈퍼카 클래스에서 Car 클래스에 있는 상태,메소드 등을 따로 등록 하지 않고 사용할수있다.

·상속의 장점
·상속을 통하여 기존 클래스의 필드와 메소드를 재사용
·기존 클래스의 일부 변경도 가능
·상속을 이용하게 되면 복잡한 GUI 프로그램을 순식간에 작성
<!--[if ppt]-->·<!--[endif]-->
·상속은 이미 작성된 검증된 소프트웨어를 재사용
·신뢰성 있는 소프트웨어를 손쉽게 개발, 유지 보수
·코드의 중복을 줄일 수 있다.

메소드 재정의 : 부모클래스가 정의한 메소드와 똑같은 원형을 가진 메소드를 자식 클래스에서 정의하는 것.



메소드를 재정의하려면 반환유형,이름 매개변수의 개수와 테이터 타입이 같아야함.(다르면 오버라이드가 아님)

상속 ex)

class Parent{

private int data = 100;

public Parent(String name){

System.out.println("부모 생성자가 호출됨" + name); // 자식클래스 객체 만들기전에 부모클래스 객체 만들고 이어붙인다는게증명.

}

public void print(){

System.out.println(data);

System.out.println("부모클래스임");

}

}

class Child extends Parent{

int data = 200;

public Child(){

//자식클래스 생성자가 호출되자마자 부모클래스의 기본생성자가 묵시적으로 호출됨.

// super(); // << 부모클래스 생성자를 명시적으로 호출하는거.

//부모클래스에 기본생성자가 없으면 알아서 불러줘야됨.

super("불러줘");

System.out.println("자식 생성자가 호출됨");

}

public void print(){

super.print();

int data = 300;

System.out.println(data);

System.out.println(this.data);

// System.out.println(super.data);

}

}


*접근지정자

protected : 동일 패키지에 속하는 클래스와 하위 클래스 관계의 클래스에 의해 접근이 가능하다. 

그래서 보통 부모 클래스가 될 클래스의 멤버는 protected 로 한다.



***Singleton 패턴

디자인패턴 중에 하나로 특정 클래스의 객체가 한개만 존재하도록 제어하는방법.

//클래스에 Singleton 패턴 적용하는방법.

//1.자기 자신에 참조변수를 static으로 등록.

//2.생성자를 private으로 감춘다.

//3.1번 변수에 대한 getter 를 만들되 해당변수가 null이면 새로운 객체를 할당하고

//  instance의값을 반환.

private static Singleton instance;

private Singleton(){}

public static Singleton getInstance(){

if(instance == null)

instance = new Singleton();

return instance;

}