반응형
추상 클래스
: 실제 구현은 하지 않고 인터페이스로 구상만 한 클래스
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("메인 페이지 이동.");
}
}
중첩 클래스
: 클래스 내부에 선언한 클래스를 이야기 한다.
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 |