JAVA 7일차

Lucy in the Sky with Diamond·2023년 6월 12일

가변인자

public void printValues(String prefix, String... values) {
    for (String value : values) {
        System.out.println(prefix + value);
    }
}
  • 가변인자란??
    • 메서드를 정의할 때, 동적인 개수의 인자를 전달할 수 있는 기능
      빠르게 예시를 통해서 이해해보자~!
public void variable(String s, String ss, String sss) {
            System.out.println(s);
            System.out.println(ss);
            System.out.println(sss);
        }
    }

여기서 메인문에 t.variable("A","B","C","D")를 명령하면 인자가 맞지 않아서 오류가 뜰것이다.

  • 이때 가변인자를 사용하면 해결이 가능하다!
    그냥 ...만 쓰면 된다!
public class test {
	public static void main(String[] args) {
		test t = new test();
		t.variable();
		t.variable("A");
		t.variable("A","B");
		t.variable("A","B","C");
		t.variable("A","B","C","D");
	}	
	public void variable(String ... s) {
		System.out.println(s);
	}
}

추상화와 인터페이스 다시 도전

추상화란?

  • 추상클래스는 미완성 설계도에 비유가 가능하다.
  • 추상 메서드를 선언하여 상속을 통해서 자손 클래스에서 완성하도록 유도하는 클래스

    abstract class 클래스이름 {
    ...
    public abstract void 메서드이름();
    }

인터페이스란?

  • 인터페이스는 추상클래스의 일종이라고 생각하면 된다.
  • 오직 추상메소드의 상수만을 멤버로 가질수가 있으며 일종의 기본 설계도라 생각
  • 인터페이스는 다중상속이 가능하다는게 큰 특징이다.(기본적으로 클래스끼리 다중상속은 안된다.)

    interface 인터페이스이름 {
    public static final 상수이름 = 값;
    public abstract void 메서드이름();
    }

그림을 보고 이해해보자!

스타크래프트에서 나오는 마린,메딕 등등 여러가지 유닛등이 있을것이다.
중요한것은 모든 유닛은 해당하는 체력,마력등이 모두 공통적으로 있다는것이다.
이때 이러한 공통적이면서 가장 보편적인 미완성 설계도가 바로 추상클래스이다.

아래 클로킹이라던가 공격이 되는데 공중공격이 가능하고 지상공격이 되고와 같이 기능적인 면을 수행하는것이 인터페이스라고 이해하면 된다.

인터페이스가 다중상속이 된다는 의미는 레이스가 클로킹과 공중 지상이 모두 공격이 가능하다는게 보일것이다.

※ 데이터베이스에서 커서라는 개념이 나오는데 마우스 커서가 아니라 데이터베이스속에서 특정 로우 특정 컬럼에서의 위치를 나타내는 개념(인덱스)이 커서이다.
콜랙션은 한방향으로만 이동함

0개의 댓글