Jam's story
18일차 본문
다형성
참조변수로 여러타입의 객체를 참조할 수 있도록 함
Singleton 싱글톤
생성자가 private로 되어있다면 new 연산자로 객체생성을 못하게 한다.
객체생성을 막는 이유=> 객체를 하나만 생성하겠다.
(추상클래스라면 미완성된 클래스이기때문에 객체생성을 막는 것이다.)
public 메소드로 인스턴스에 접근하게 함으로써 사용할 수 있는 인스턴스의 개수를 제한
- private로 생성자가 선언되어있다.
- getInstance로 생성자를 가져온다. singleton.getInstance()
- getInstance()에서 사용될 수 있도록 인스턴스가 미리 생성되어있다. private static Singleton singleton;
package days18;
/**
* @author 지민
* @date 2022. 3. 15. - 오전 11:32:10
* @subject
* @content
*
*/
public class Singleton {
/*
* public Singleton(int n) {
*
* }
*/
private static Singleton singleton;
//자기 자신의 인스턴스를 참조할 참조변수 선언
private Singleton() {}
public static Singleton getInstance() {
return singleton;
}
}
public class Ex05 {
public static void main(String[] args) {
Singleton s1=Singleton.getInstance();
Singleton s2=Singleton.getInstance();
int hashCode=s1.hashCode();
System.out.println(hashCode);
}
}
Math 클래스는 객체를 만들지 못한다 .
매개변수 다형성
인터페이스
* 자바 자료형
* ㄴ 기본형 - 8가지
* ㄴ 참조형 - 배열, 클래스(String), [인터페이스]
*
* 1. 인터페이스 - 참조타입
* 2. 일종의 추상 클래스 -
* 추상메서드 + 객체를 생성할 수 없는 미완성의 클래스
* 3. 일반 메서드 X, 필드(멤버변수) X
* 100% 추상메서드 , 상수 만을 가지는 추상클래스
* 4. 다른 클래스를 선언(작성)할때 도움을 줄 목적으로 사용된다.
* 5. 인터페이스 선언 형식
* class 키워드 대신에 interface 키워드 사용한다.
* [접근지정자] [기타제어자 X]
* [접근지정자] interface 인터페이스명{
* // abstract 추상메서드 선언 {} X
* // final 상수 선언
* }
* 6. 인터페이스의 멤버의 제약 사항
* ㄱ. 모든 멤버 변수 == 상수
* public static final 생략 가능
* ㄴ. 모든 메서드 == 추상 메서드
* public abstract 생략 가능
* 7. JDK 1.8 부터 변경
* ㄱ. static 메서드 추가
* ㄴ. 디폴트 메서드 추가
*
* 8. 인터페이스의 상속
* 인터페이스 끼리는 상속 가능하다.
* 다중 상속도 가능하다
* [참고] Object 조상 클래스 X
static 메서드 안에서는 this를 쓸수없다.
static은 객체생성을 하지 않아도 쓸수있기 때문에
인터페이스 다형성
/*
<E> 제네릭, 지네릭
ArrayList<E> 클래스
public class ArrayList
extends AbstractList
implements List, RandomAccess, Cloneable, java.io.Serializable
*/
// 추상 클래스 - AbstractList
// 인터페이스 - List, RandomAccess, Cloneable, java.io.Serializable
// List 인터페이스 부모 인터페이스 Collection 인터페이스
//Collection list = new ArrayList();
// 인터페이스 업캐스팅
List list = new ArrayList();
disp( list );
disp( new ArrayList() );
// 인터페이스 매개변수 다형성
ArrayList xx = new ArrayList(list);
} // main
// 인터페이스 매개변수 다형성
private static void disp( List list ) {
}