자바에서 클래스 객체 생성시 타입이 서로 다를때..

조회수 2061회

안녕하세요

보통 클래스 객체를 생성할때 이런식으로 하시잖아요

MyObject object = new MyObject();

jsp 코드리뷰 공부를 하고 있는데 만약 맨앞에있는 MyObject와 new 뒤에있는 MyObject의 형(type)? 이 다르면 어떻게 해석해야할지 잘 모르겠습니다.

예를 들면

Action action = new BoardListAction();

이런 코드처럼 말입니다. 참고로 action은 인터페이스입니다.

package action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import vo.ActionForward;

public interface Action {
    ActionForward execute(HttpServletRequest request, HttpServletResponse response) throws Exception;

}


package action;

import java.util.ArrayList;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import svc.BoardListService;
import vo.ActionForward;
import vo.BoardBean;
import vo.PageInfo;

public class BoardListAction implements Action{
@Override
public ActionForward execute(HttpServletRequest request, HttpServletResponse response) throws Exception {
    // TODO Auto-generated method stub

    ArrayList<BoardBean> articleList = new ArrayList<>(); // 각 페이지당 출력될 전체 글 목록을 저장할 ArrayList객체를 생성하는 부분이다.
    int page=1;
    int limit = 10; // 한 페이지당 출력될 글의 개수를 10개로 설정하는 부분이다.

    if(request.getParameter("page") != null) {
        page=Integer.parseInt(request.getParameter("page")); //목록 보기에 출력될 페이지가 피라미터로 전송된 경우 page 변수의 값을 변경하는 부분이다.
        // 목록 보기 페이지에서 조회할 페이지 번호를 클릭하고 요청한 경우는 페이지 번호가 피라미터로 전송되어 온다.
    }

    BoardListService boardListService = new BoardListService();
    int listCount = boardListService.getListCount(); // 총 글의 개수를 반환하는 메소드를 호출하는 부분이다.
    //총 리스트 수를 받아
    articleList = boardListService.getArticleList(page,limit);
    //리스트를 받아옴
    //총 페이지 수
    int maxPage=(int)((double)listCount/limit+0.95); // 0.95를 더해서 올림 처리★★★★★★★
    //현재 페이지에 보여줄 시작 페이지수(1,11,21 등...)★★★★★★★★★★
    int startPage = (((int)((double)page/10 + 0.9)) -1) * 10 + 1;
    //현재 페이지에 보여줄 마지막 페이지 수.(10,20,30등...)★★★★★★★★★★★★★★★
    int endPage = startPage+10-1;

    if(endPage > maxPage) endPage=maxPage;

    PageInfo pageInfo = new PageInfo();
    pageInfo.setEndPage(endPage);
    pageInfo.setListCount(listCount);
    pageInfo.setMaxPage(maxPage);
    pageInfo.setPage(page);
    pageInfo.setStartPage(startPage);
    request.setAttribute("pageInfo", pageInfo);
    request.setAttribute("articleList", articleList);
    ActionForward forward = new ActionForward();
    forward.setPath("/board/qna_board_list.jsp");

    return forward;
}
}

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • BoardListAction 은 Action의 한 종류입니다.

    Action의 한종류이므로 BoardListAction는 Action으로 대입될 수 있습니다.

    사람 person = new 민동현() 이라는 겁니다.

    객체지향에서 다형성이라는 측면을 심도있게 고민해보시기 바랍니다.

    책에서의 설명은 그다지 와닿지 않을겁니다.

    가장 좋은 학습방법은 디자인 패턴을 공부해보고 작접 간단한 프레임워크를 제작해보거나 위의 소스에서 사용된 프레임워크를 분석해보는겁니다.

    위의 질문의 소스는 커맨드 패턴으로 보입니다. 프레임워크내에 Action을 처리하는 Executor가 있을겁니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)