반응형

 

추상 클래스

 

: 실제 구현은 하지 않고 인터페이스로 구상만 한 클래스

 

abstract 키워드를 선언하며 중괄호가 없는게 특징이다.

하위 클래스는 반드시 재정의하여 실행 내용을 추가해야 한다. 또한 abstract 메소드를 사용할 경우 클래스에도 abstract을 추가해주어야 한다.

 

추상 클래스 선언

 

 

 

인터페이스 (interface)

 

= 설계도

 

: 객체의 사용 방법을 정의한 타입을 이야기 한다.

구현체가 따로 있는 특징이 있다.

 

만들때 앞에 I를 기본으로 붙이며 중괄호 없이 세미콜론(;)으로 끝난다.

인터페이스를 상속 받을 때는 implements사용하며, 다중 상속이 가능하다.

 

+ 클래스를 상속 받을 때는 extends.

 

 

 

package kr.or.ddit.study08;

// 클래스에 대한 도큐먼트 주석 : 어떤 인터페이스인지 기입
/**
 * @since  23.12.27
 * @author yhw
 * @version 1.1
 * 
 * 게시판 입력 하는 인터페이스
 *
 */
public interface IBoard {
	
	public static final int num = 0;
	
	// 메소드 각각에 대한 도큐먼트 주석
	/**
	 * @param title		: 제목 50자 이내
	 * @param content	: 내용 2000자 이내
	 * @param id		: 로그인한 회원 아이디.
	 */
	
	public void writeBoard(String title, String content, String id);
}

 

package kr.or.ddit.study08;

public class BoardImple implements IBoard{

	@Override
	public void writeBoard(String title, String content, String id) {
		// 
		
		if(id == null && id.isEmpty()) {
			System.out.println("로그인 창으로 이동.");
		} else {
			System.out.println("디비에 게시판 저장.");
		}
	}
	
}

 

package kr.or.ddit.study08;

public class FreeBoardImple implements IBoard {

	@Override
	public void writeBoard(String title, String content, String id) {
		System.out.println("자유게시판 DB에 등록.");
	}

}

 

package kr.or.ddit.study08;

public class CommunityBoard implements IBoard {

	@Override
	public void writeBoard(String title, String content, String id) {
		System.out.println("커뮤니티 게시판 등록.");
	}

}

 

package kr.or.ddit.study08;

import java.util.Scanner;

public class BoardMain {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		IBoard board = null;
		System.out.println("1. 자유 게시판.");
		System.out.println("2. 커뮤니티 게시판.");
		
		// 다형성 이용
		int sel = sc.nextInt();
		if(sel == 1) {
			board = new FreeBoardImple();
		} else if(sel == 2) {
			board = new CommunityBoard();
		}
		
		String id = "123";
		String title = "제목.  ";
		String content = "내용";
		
		if(id == null || id.isEmpty()) {
			System.out.println("로그인 기능");
		} else {
			board.writeBoard(title, content, id);
		}
		
		System.out.println("메인 페이지 이동.");
	}
}

 

결과 화면1

 

 

 

중첩 클래스

 

: 클래스 내부에 선언한 클래스를 이야기 한다.

 

package kr.or.ddit.study09;

public class ClassA {

	public static void main(String[] args) {
		ClassA aa = new ClassA();
		ClassC cc = aa.new ClassC();
	}
	
	class ClassC {
		public void method1() {
			// 클래스 A를 설명하기 위해 사용됨.
		}
	}
}

class ClassB {
	
}

 

 

반응형

'자바' 카테고리의 다른 글

[Java 초급] 19장 예외  (0) 2023.12.28
[Java 초급] 18.5장 테스트  (0) 2023.12.27
[Java 초급] 17.5장 테스트  (0) 2023.12.26
[Java 초급] 17장 상속, 다형성  (2) 2023.12.26
[Java 초급] 16.5장 테스트  (0) 2023.12.22