본문 바로가기
Java의 정석 기초편(남궁성) 정리 + a/자바정석 간단 정리

자바정석 chapter 5 ~ 7 + 11 일부 정리

by doriver 2022. 9. 21.

5. 배열

6. 객체지향 프로그래밍 1

7. 객체지향 프로그래밍 2

11. 컬렉션 프레임웍

 

5. 배열

배열 : 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것

타입[ ] 변수이름 = new 타입[길이];

int[] score = new int[5];

// score[0] , score[1] , score[2] , score[3] , score[4]

score[0] = 10;
score.length; // 5

for ( int i = 0; i < score.length; i++ ) {
	score[i] = i * 10;
}

// 다른 표현
int[] arr = {20, 30, 40, 50};

 

6. 객체지향 프로그래밍 1

클래스 : 객체를 정의해 놓은것, 객체의 설계도, 객체를 생성하는데 사용된다.

객체 : 클래스에 정의된 내용대로 메모리에 생성된 것. 객체는 속성(변수)과 기능(메서드)으로 이루어진다. 

(속성과 기능을 객체의 member라 함)

인스턴스 : 객체와 같은 의미 ( 객체는 모든 인스턴스를 대표하는 포괄저인 의미 )

클래스의 인스턴스화, 클래스의 인스턴스

 

Tv t;

 Tv클래스 타입의 참조변수t , 메모리에 참조변수t를 위한 공간이 마련된다

 

t = new Tv();

연산자new에 의해 Tv클래스의 인스턴스가 메모리의 빈 공간에 생성되고, 대입연산자(=)에 의해 생성된 인스턴스의 주소값이 참조변수t에 저장된다

참조변수 t를 통해 Tv클래스의 인스턴스에 접근할수 있다

 

 

7. 객체지향 프로그래밍 2

 

 

상속 : 자손클래스는 조상클래스의 모든 멤버를 상속받는다 (생성자와 초기화 블럭은 상속되지 않는다)

 

 

 

자손클래스의 인스턴스를 생성하면 조상 클래스의 멤버도 함께 생성된다

public class Content01 {
		
	public static void main(String[] args) {
		
		SmartTv stv = new SmartTv();
		stv.channel = 10; // 조상 클래스로부터 상속받은 멤버
		stv.channelUp(); // 조상 클래스로부터 상속받은 멤버
		System.out.println(stv.channel);
		
		stv.displayCaption("Hello, world");
		stv.caption = true;
		stv.displayCaption("Hello, hello");
		
	}

}

 

Overriding : 조상클래스로부터 상속받은 메서드의 내용을 변경하는것(자손클래스 자신에 맞게 변경)

메서드의 선언부(메서드 이름. 반환타입. 매개변수)는 조상의 것과 일치해야함 

 

Overloading : 한 클래스 내에 같은 이름의 메서드를 여러개 정의하는것. 매개변수의 개수 또는 타입이 달라야하고, 반환타입은 관계 없다

 

다형성 : 여러가지 형태를 가질수 있는 능력. 자바에서는 조상클래스 타입의 참조변수로 자손클래스의 인스턴스를 참조할수 있다.

Tv t = new SmartTv();

Tv타입의 참조변수로는 SmartTv인스턴스의 멤버중 Tv클래스의 멤버들만 사용할수 있다.

 

자손타입의 참조변수로 조상타입의 인스턴스를 참조할수 없다

SmartTv s = new Tv(); // 에러(불가능)

 

메서드 내용이 상속받는 클래스에 따라 달라질수 있기때문에 조상클래스에서는 선언부만 작성하고, 실제 내용은 상속받는 클래스에서 구현하도록 비워둔다 --▶ 추상클래스

 

추상클래스(abstract class) : 추상메서드를 포함하고있는 클래스. 추상클래스로는 인스턴스를 생성할수 없다. 상속을 통해서 자손클래스에 의해 완성된다. 새로운 클래스 작성하는데 바탕이되는 조상클래스

abstract class 추상클래스 이름 {

}

 

추상메서드(abstract method) : 메서드는 선언부와 구현구로 구성되어 있다. 선언부만 작성하고 구현부는 작성하지 않은채로 남겨둔것.

abstract 리턴타입 추상메서드이름 (); // 구현부가 없으므로 { }대신 문장 끝 알리는 ' ; '을 적어줌

 

인터페이스(interface) : 추상메서드와 상수만을 멤버로 갖는 클래스(추상클래스). 다른 클래스를 작성하는데 도움줄 목적으로 작성된다.

interface 인터페이스이름 {

	public static final 타입 상수이름 = 값;
	
	. . .
    
	public abstract 리턴타입 추상메서드이름 (매개변수 목록);
    
	. . .
    
}

제어자 생략시, 생략된 제어자는 컴파일러가 자동적으로 추가해준다

 

인터페이스는 인터페이스로부터만 상속받을수 있으며, 클래스와 달리 다중상속(여러개의 인터페이스로부터 상속)받는 것이 가능하다
클래스의 상속과 마찬가지로, 자손 인터페이스는 조상 인터페이스에 정의된 멤버를 모두 상속받는다

 

11. 컬렉션 프레임웍

컬렉션 프레임웤의 핵심 인터페이스 : Collection, List, Set, Map

public interface List<E> extends Collection<E> { }
public interface Set<E> extends Collection<E> { }
public interface Map<K, V> { }

 

인터페이스 특징 구현 클래스
List 순서가 있는 데이터 집합, 데이터의 중복을 허용함 ArrayList, LinkedList, Stack, Vector 등
Set 순서 x , 데이터 중복 허용 x HashSet, TreeSet 등
Map key, value의 쌍으로 이뤄진 데이터 집합
순서 x , key 중복 혀용x , value 중복 허용함
HashMap, TreeMap, Hashtable 등