| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
- 컴공
- App
- Kotlin
- 맥북 권한
- API
- kotlin-android-extensions
- mac permission denied
- chown
- HTTP
- chmod
- mac os 권한
- import안됨
- 앱
- android studio
- 코틀린
- 앱개발
- login_btn
- dart
- chown -R
- flutter
- import
- Today
- Total
Milan Dev
Java 연습장 본문
목차{
1.메소드
2.클래스
3.생성자
4.상속
5.캡슐화
}
1. 메소드
: 문제 해결을 위한 기능을 하는 특정 코드를 따로 묶어놔 필요할 때 호출하여 사용 할 수 있도록 하는 것 (함수 비스무리함)
예시:

getAvg는 x와 y의 평균을 값을 반환하는 메소드이고 메인 메소드에서 getAvg를 출력하기 위해 호출했다.
2. 클래스
: 객체를 정의하는 공간(설계도), 변수와 메소드로 구성된다.
변수와 메소드로 프로그램을 구현하여 실체화하여(인스턴스) 메모리에 할당한다.
예시: (덧샘과 뺄샘 계산기)

1은 계산기의 기능을 설계해둔 클래스이고 클래스 내에는 a, b, c 3개의 메소드를 작성했다.
2번은 값을 저장, 덧 샘과 뺄 샘을 하는 것을 호출하는 역할을 한다.
3. 생성자
: 생성자는 클래스 안에 선언되어서 객체가 생성될 때에 변수에 초기값을 제공하고 필여한 초기화를 실행한다. 생성자는 public 수식어가 있어야 하며 여러 개의 생성자를 설정하는 것도 가능하다. 생성자를 만들지 않아도 실행결과에 영향을 미치지 않는 기본 생성자가 자동으로 생성된다.
예시:

위 코드의 박스는 생성자를 나타낸다. 생성자를 사용하면 다음과 같이 직접 인스턴스를 설정할 때 변수를 선언하여 사용자의 편의를 올린다. (생성자를 만들 때는 클래스의 이름과 동일해야 한다.)
4. 상속
: 이미 존재하는 클래스로부터 멤버들을 물려받는 것이다. 상속되는 클래스를 수퍼 클래스, 부모 클래스로 부르며 상속을 받는 클래스를 서브 클래스, 자식 클래스라 부른다. 상속을 통해 수퍼 클래스의 기능을 서브 클래스에서 사용할 수 있게 하여 코드의 중복을 줄여 코드를 더운 짧게 만들고 유지보수 또한 더욱 쉽게 할 수 있도록 해준다.
주의점:
자바에선 다중 상속을 허락하지 않는다. 즉, 서브클래스의 개수는 다수가 있을 수 있지만 한 서브 클래스가 2개 이상의 부모 클래스를 갖는 것을 불가능하다.
수퍼 클래스 내에 접근 지정자 중 protected와 public에 해당하는 멤버들은 서브 클래스에 상속시킬 수 있지만 private은 수퍼 클래스의 전용 멤버이기 때문에 상속을 시켜도 서브 클래스에선 사용할 수 없다.
오버라이딩(재정의)은 서브 클래스에 상속된 메소드 중 필요에 따라 메소드의 내용을 다시 정의하여 사용할 수 있다.
(예시를 통해 더 알아보자)
예시:



위 코드를 보면 class 1.클래스 extends 2.클래스{} 의 문법으로 작성 된 것을 볼 수 있다. 이는 수퍼 클래스인 2가 서브 클래스인 1에게 상속을 한다는 문법이다. 그리하여 AVANTE, SONATA, MALIBU클래스에서 Car 클래스이 변수와 메소드를 사용할 수 있다.
또한 Car클래스에서 정의된 public void show(){}는 차번호와 연료량만을 출력하는 메소드지만 각 서브 클래스에서 오버라이딩 하여 각 차량의 가격, 번호, 연료량을 출력하도록 만들었다. 수퍼 클래스에서 사용한 메소드와 동일한 문법으로 만들 되, 속 내용을 변경하여 사용할 수 있다. 이를 오버라이딩(재정의)라고 한다.
상속이 되지 않을 경우 위의 코드는 Car 클래스에서 선언된 번호 변수와 연료량 변수를 사용할 수 없지만 상속을 통하여 차량 가격뿐만 아니라 번호와 연료량까지 출력을 할 수 있게 된다.
5. 캡슐화
: 외부의 다른 사용자로부터 데이터를 보호하고 잘못된 사용으로 객체의 손상을 막기 위해 외부에 노출되어선 안되거나 필요하지 않은 속성을 은닉하는 것을 뜻한다. 이는 접근 지정자를 통해 설정할 수 있다. 접근 제어자는 멤버 또는 클래스에 사용되고 외부에서 접근하지 못하게 만든다. 접근 지정자는 public, protected, default, private 가 있다.
public: 접근 제한이 없어 다른 패키지나 클래스에서도 사용할 수 있다.
protected: 같은 패키지 내에선 접근할 수 있고 다른 클래스에선 접근할 수 없지만 상속받은 서브 클래스에선 가능.
default: 같은 패키지 내에서만 접근 가능하다.
private: 같은 클래스 내부에서만 접근 가능하다.
만약 private 형태의 변수에 값을 주고 출력하고 싶다면 getter와 setter를 사용하면 된다. get 메소드를 만들어 private으로 보호된 변수를 반환하도록 하면 직접적으로 변수를 사용하지 않고도 호출이 가능하고 set 메소드를 만들어 외부로 부터 받은 값을 set 메소드 안에서 private으로 보호된 변수에 저장하면 private 변수에 값을 저장할 수 있다.