Jam's story

18일차 본문

Java

18일차

애플쩀 2022. 3. 15. 17:03
다형성 

참조변수로 여러타입의 객체를 참조할 수 있도록 함 

 

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  ) { 
      
   }

'Java' 카테고리의 다른 글

20일차  (0) 2022.03.17
19일차  (0) 2022.03.16
17일차  (0) 2022.03.14
16일차  (0) 2022.03.11
15일차  (0) 2022.03.10
Comments