eterno

JAVA 16일차. 추상클래스, this(), 정보은닉 본문

JAVA/강의노트

JAVA 16일차. 추상클래스, this(), 정보은닉

영원한별똥별 2022. 8. 24. 12:39
728x90
반응형

자바에서 Resource를 사용하는 방법

  1. static 키워드 : 클래스로 사용
  2. new 연산자(키워드) : 참조변수 사용
  3. 상속(inheritance) : 클래스, 참조변수 없이 사용 extends 키워드 : class 클래스 상속시 사용
    • 단일상속(simple inheritance) impolement 키워드 : interface클래스 상속 시 사용
    • 다중상속(multiful inheritance)

   public abstract class : 추상클래스라고 하며 new 연산자를 사용하지 못함
    getInstance() 함수사용  ex)java.util.Calendar

   사용방법 : Calendar rightNow = Calendar.getInstance();  // api에서 확인 가능

 

인터페이스는 다중상속이 가능하다.

 - 다중상속이란 ? 클래스에 여러개의 인터페이스를 넣는 것

 

예제) 

Test_Cinterface 는 A_interface, B_interface, C_interface로부터 상속 받는다.

 

예제)

1. 인터페이스 2개 생성

2. 클래스를 만들어 인터페이스를 불러온다.(다중상속)

3. 인터페이스를 호출하여 클래스의 값을 출력한다.


자바 클래스 종류

  • 일반 클래스 : public class 클래스이름
     - 구상클래스(concrete class : 구현체가 다 있는 클래스)
  • 추상 클래스 : public abstract class 클래스이름
     - 추상함수를 가지고 있는 (구현체가 없는) 불완전한 클래스
  • 인터페이스 클래스 : public interface 인터페이스클래스이름
    완벽한 추상클래스
  • 파이널 클래스 : public final class 클래스이름
     - 클래스 변경할 수 없는 클래스

추상클래스(abstract class)

: 구체적이지 않고 막연한 클래스 ⇒ 구현 코드가 없는 클래스

  • 추상클래스는 항상 추상메소드를 포함한다.
  • 구현체가 있어도 되고 없어도 된다.
  • 인터페이스는 추상클래스이지만 ALL 추상클래스이다.

(인터페이스와 추상클래스는 비슷해서 둘 다 new연산자 하면 안되고(생성자를 안 갖고 있음)

추상클래스를 쓰려면 상속 해야한다.)

  • ex) Class Calendar 는 추상클래스이고 메모리에 올릴 때 get.Instance()를 사용한다.

public abstract class **Calendar**

Calendar rightNow = Calendar.getInstance();

→ api에서 확인 가능

 

예제)


this() 예약어

this : 현재 메모리에 있는 나(오브젝트)의 주소를반환한다.

 - 생성자에서 다른 생성자를 호출 할 때 

 - 자신의 데이터필드를 참조할 때

 - 같은 클래스에서 다른 생성자 호출 할 때

this 예약어를 사용한다.

 

회원정보는 이름(한글), 이메일(영문), 전화번호(핸드폰번호), 주소(시, 동)을 입력한다.

회원정보출력하는 방법 4가지

 

방법1)직접 입력하여 출력한다.

방법2)this()예약어를 사용하여 출력한다. 

방법3) 이클립스에서 아규먼트 값을 받아 출력한다.

방법4)this와 scanner를 사용하여 사용자로부터 직접 값을 받아 출력한다.


정보은닉(information hiding) 

private로 선언한 변수나 메소드는 외부 클래스에서 사용 할 수 없다.

(private는 같은 클래스 내부에서만 접근 할 수 있는 접근제어자)

→ 외부코드에서 parvate로 선언한 변수, 메소드를 사용하려면 public 메소드를 제공해야한다.

  • public메소드가 제공되지 않는다면 get(), set()메서드를 사용
  • setter함수 : 초기화함수 / 사용방법 :  set + 변수이름()
  • getter함수 : 리턴함수 / 사용방법 :  get + 변수이름();  
     * 변수이름의 첫 글자는 대문자로 쓴다.

참고) property(프로퍼티) : 데이터를 저장하기 위한 변수

 

getter, setter 함수 사용하는 방법

소스창에서 마우스 우클릭 - Source - Generate Getters and Setters… 클릭

set(), get()함수를 추가하고 싶은 멤버 변수를 선택하고 OK버튼 클릭하면 아래와 같이 생성된다.

package a.b.c.ch5;

public class TestMemberVO {
	//information hiding, encapsulation : 정보은닉(권한이 없으면 쓸 수 없음)
	private String name;

// getname() : name값을 리턴한다
	public String getName() {
		return name;
	}
// setname() : name값을 초기화한다
	public void setName(String name) {
		this.name = name;
	}	
}

예제)

728x90
반응형