JAVA

[JAVA]객체지향언어,접근지정자

개발한이 2022. 7. 25. 18:27

객체지향언어

클랙스,객체

 

객체지향언어특징

1.상속

2.캡슐화

3.추상화

4.다형성

 

상속

의미 그대로 상위 클래스의 모든 것을 상속받아 사용하는 것

부모와 자식 관계 (데이터의 관계성)

 

캡슐화

데이터와 기능을 외부로부터 접근은 차단하고

권한 또는 절차 없이 데이터를 변경 또는 기능 수행을 할 수 없게 캡슐처럼 보호한다.

 

추상화

추상적인 요소들을 묶어서 분류하는것

학새으선생,학부모 등 사람이라는 추상적인 요소로 분류할 수 있음 (데이터의 구조화)

 

다형성

객체의 기능이 다양한 형태를 가질 수 있음 상속과 깊은 관계를 가진다.

한 부모 밑에서 태어난 자식이 완전히 같을 수 없듯이 객체 또한

부모 클래스로부터 상속받은 데이터와 기능을 자식 클래스에서 재정의하여 사용할 수 있음.

 

 

객체지향 언어의 장점

1.재사용성 : 상속을 통해 코드의 재사용을 높일 수 잇음.

2.생산성 향상 : 클래스 단위의 부품들을 조립

3.유지보수의 우수성 : 구조화 된 소스코드 클래스 단위로 소스코드를 관리할 수 있음.

 

객체지향 언어의 단점

1.객체를 세분화하여 설계하여야 한다.

2.실행 속도가 절차지향 언어 대비 느리다.

3.상속으로 인하여 관계가 많이 형성되면 코딩의 난이도가 높아진다.

 

절차 VS 객체 지향언어

절차 지향언어의 반대가 객체지향언어가 아니다!

객체 지향 언어도 절차지향언어에 속하지만 객체라는 녀석들의 관계가 추가된 것이다.

 

 

 

 

 

클래스

객체에 대하여 정의해 놓은 설계도 혹은 틀 (쉽게말해 그냥 틀)

 

object 객체

클래스를 통해 구현 할 수 있는 모든 대상

즉,해당 클래스로 구현한 인스턴스를 대표하는 의미

 

instance 인스턴스

객체가 실제로 구현된 것

클래스의 인스턴스라고 표현함

메소드와 클래스 응용 예시

접근지정자

 

자바도 클래스의 멤버 각각에 외부에서 접근할 수 있는 범위를 지정하는 접근 지정자를 둘 수 있다.

다음과 같은 네 가지가 있다.

public 

공개 정도가 가장 높고 어디에서든 자유롭게 접근할 수 있다.

protected 

같은 패키지 내에서 접근이 가능하고 다른 패키지에서도 상속을 받은 클래스 내부에서는 사용 가능하다.

public과 다른 점은 다른 패키지의 자식 클래스 외부에서는 접근할 수 없다는 것이다.

default(package private)

같은 패키지 내에서만 접근이 가능하다. 아무런 접근 지정자도 없을 경우 이 옵션이 자동으로 적용된다.

private

동일 클래스 내에서만 접근이 가능한 가장 낮은 단계의 자유도를 갖는다.

다음과 같이 tut02 패키지의 CA클래스와 이를 상속받은 CB클래스가 있다고 하자.

getter,setter (alt+shit+s) -> generation setter

getter

외부로 제한된 필드값을 전달한다.

제한된 필드의 값을 바꾸어 외부로 전달할 수 있다.

 

setter

외부의 값을 받아 제한된 필드의 값을 변경할 때 사용한다.

 

getter와 setter 사용 이유

클래스 내 private로 지정된 필드에 접글할 수 있도록 하기 위해서이다.

class Car {
    private int speed;
    private boolean stop;
    
    public int getSpeed(){ 
        return speed;
    }
    public boolean isstop(){ //boolean은 is-
        return stop;
    }
    public void setSpeed(int speed) { //setter은 값을 변경하는 것이 목적
        this.speed = speed;
    }
}

예시

 

캡슐화 순서

1.멤버 변수 앞에 private작성

->외부로부터의 데이터 저장을 차단

2.set()메소드 정의: 멤버 변수에 값을 저장, 수정할 수 있도록 함

3.get()메소드 정의: 멤버 변수의 값을 출력할 수 있도록 함.

4.메소드 내에 제어문을 사용해서 정확한 값만 입력되도록 코드 작성

 

 

'JAVA' 카테고리의 다른 글

[JAVA]추상메소드,인터페이스  (0) 2022.08.01
[JAVA]배열,상속  (0) 2022.07.25
[JAVA]continue,메소드  (0) 2022.07.21
[JAVA]반복문  (0) 2022.07.20
[JAVA]입력,제어흐름도  (0) 2022.07.19