본문 바로가기
2022-2/자바

3장 클래스,캡슐화, 다형성

by 철없는민물장어 2022. 10. 9.
728x90
반응형

class는 데이터 + 메소드의 수행까지 포함됨

 

main() 메소드는 JAP에 반드시 있어야 하는 특수한 메소드.

프로그램 실행 시 자동으로 실행되는 메소드.

main()메소드는 String의 array를 argument로 받는다 (명령행 매개변수)

args[0] 요런식 (String이기때문에 필요 시 변환해야함. ex: Integer.parseInt(args[0]))

 

캡슐화

Object를 작성할 때 숨겨야 하는 정보(private)와 공개해야 하는 정보(public)를 구분하여 작성.

Object의 사용자는 기능만 알고 사용하며 어떻게 처리되는지는 은폐된다 (캡슐화)

 

캡슐화의 장점: 

object에 포함된 정보의 손상오용을 막을 수 있다.

object 조작 방법이 바뀌어도 사용 방법은 바뀌지 않는다.

data가 바뀌어도 다른 object에 영향을 주지 않아 독립성이 유지됨

처리된 결과만 사용하므로 object의 이식성이 좋음.

object를 부품화 할 수 있어 새로운 시스템의 구성에 부품처럼 사용할 수 있다.

 

message

object에게 일을 시키는 행위

1. object의 이름(주소)

2. 수신 object의 method 이름

3. method에 전달할 매개변수

가 필요함

point.move(10,10); 이런식의 메소드 호출을 message라고 함.

 

다형성

서로 다른 object가 동일한 message에 대하여 서로 다른 방법으로 응답할 수 있는 기능.

모형.draw();라는 메소드가 있다고 치자

같은 draw()메소드지만

삼각형A.draw() => 삼각형을 그림 

사각형A.draw() => 사각형을 그림

 

상위 추상 클래스에 추상method가 선언되고,

상속받는 하위 클래스에 같은 이름의 method가 선언된다.

abstract class Shape{
	abstract void draw();}
    
class Circle extends Shape{
	void draw(){
    	//원을 그리는 기능}
        }
class Rectangle extends Shape{
	void draw(){
    	//사각형을 그리는 기능}
        }

다형성의 전형적인 형태.

Shape shapes[] = new Shape[3];

shapes[0] = new Circle();
shapes[1] = new Rectangle();
shapes[2] = new Triangle();

for(int i=1;i<3;i++){
	shapes[i].draw();}

 

728x90
반응형

'2022-2 > 자바' 카테고리의 다른 글

오버로딩  (0) 2022.10.20
객체와 클래스  (0) 2022.10.11
자바 - 명령행 매개변수, 클래스, 클래스 상속, 클래스 배열  (0) 2022.09.27
자바 - 객체 복사 참고사항  (0) 2022.09.25
자바 실습 - 방 배정  (2) 2022.09.25

댓글