본문 바로가기

728x90
반응형

Java

(22)
[Java] 컬렉션 프레임워크 (Collection Framework), List 인터페이스 (List interface) 컬렉션 (Collection) 데이터를 저장하고 관리하는 Java의 가변 크기의 오브젝트 컨테이너를 컬렉션이라고 한다. 리스트, 트리, 해쉬, 셋, 큐, 맵 등의 자료구조가 여기에 포함된다.    인터페이스 (Interface) 컬렉션 프레임워크는 인터페이스와 클래스로 구성되어 있다. 인터페이스는 클래스가 어떤 식으로 구현되어야 하는지에 대해서 클래스의 동작 규칙을 정의하는 역할을 한다.     컬렉션 프레임워크 컬렉션 프레임워크 인터페이스의 하위 인터페이스로는 List, Queue, Set 인터페이스가  있다. 컬렉션 프레임워크에는 다음과 같은 메서드들이 정의되어 있으며 이는 컬렉션 프레임워크의 상속을 받는 인터페이스에서만 사용이 가능하다. boolean add(E e)객체를 맨 끝에 추가한다.void..
[Java] package, import 패키지 (package) 패키지는 하나의 프로젝트에서 여러 개의 소스파일을 사용할 때 서로 다른 소스파일을 구분하기 위하여 사용한다.  C++이나 C#에서의 namespace와 유사한 역할을 한다고 생각하면 된다. 만약 패키지를 명시하지 않으면 Java의 기본 패키지를 사용하고 있는 것이다. 패키지는 소스코드당 한 번만 선언할 수 있으며 소스코드의 가장 첫 번째 줄에 위치해야 한다. 예를 들어 아래 코드처럼 작성된 두 개의 소스파일이 있다고 해보자. package test1;public class MyClass { } package test2;public class MyClass { }  이제 해당 프로젝트에서는 import를 통해서 같은 이름의 MyClass를 사용하는 것이 가능하다.      impo..
[Java] 오브젝트 클래스 (Object Class) 오브젝트 클래스 (Object Class) 모든 Object Class는 Java의 최상위 부모클래스이다. 따라서 Java의 모든 Class는 Object Class를 직간접적으로 상속받는다.    오브젝트 클래스의 역할 Java의 모든 클래스는 오브젝트 클래스에서 파생되므로 모든 클래스에서 오브젝트 클래스의 메서드를 사용할 수 있다. 즉, 오브젝트 클래스는 Java에 기본적인 메서드를 제공하는 역할을 한다.     오브젝트 클래스 메서드 - clone()protected Object clone() throws CloneNotSupportedException clone() 메서드는 현재 객체의 복사본을 생성하는 역할을 한다. 복사는 얕은 복사로 진행되기 때문에 깊은 복사를 사용하고 싶다면 오버라이딩을 해..
[Java] final final 키워드 final 키워드를 사용하면 기본적으로 확장 불가능하다는 특성을 갖고 있다. final 키워드는 변수, 메서드, 클래스 등에 사용할 수 있다.    - final 변수final 키워드를 변수에 사용하게 되면 마치 const 키워드처럼 초기화 이후 변수의 값을 변경할 수 없게 된다. 그러나 final은 const와 다른 점이 있는데 참조형 변수(객체)에 사용할 경우 내부의 값은 변경할 수 있다. 이때 final은 참조형 변수의 주소값을 변경할 수 없다는 의미로 사용된다.    - final 매개변수매개변수에 final을 사용하게 되면 해당 매개변수는 함수 내부에서 값의 변경이 불가능하다. 이는 const를 사용하는 것과 매우 유사하다.    - final 메서드final 키워드를 메서드에..
[Java] 추상 클래스, 추상 메서드 (abstract) 추상 클래스 (abstract class) abstract 키워드를 사용하여 클래스를 선언하면 해당 클래스로는 객체를 생성하는 것이 불가능하다. abstract을 통해서 해당 단계에서 구현할 내용이 없을 때 구현 없이 클래스의 구조만을 선언하는 것이 가능하다. 추상 클래스는 해당 클래스가 아직 미완성이거나 상속을 위해서 빈 클래스가 필요할 때 사용된다. abstract class Shape { // 빈 추상 클래스}        추상 메서드 (abstract method) 추상 메서드는 추상 클래스안에 선언할 수 있는 메서드로 정의가 없고 선언만 되어 있다. 추상 메서드를 포함한 클래스는 하위 클래스에서 반드시 이 추상 메서드를 오버라이딩(정의)해주어야 한다. abstract class Animal..
[Java] super, super 생성자 super super 키워드를 사용하면 SubClass(자식클래스)에서 SuperClass(부모클래스)의 멤버 및 메서드에 접근할 수 있다. 상속을 받았으니 당연히 super 키워드 없이도 사용이 가능하지만 this 키워드처럼 활용할 수 있다. 따라서 아래 코드처럼 부모클래스의 멤버에 접근하는 것이 가능하다. class A { int a;}class B extends A { int a, b; B (int a, int b) { this.a = a + super.a; this.b = b; }}      SuperClass 생성자 SubClass 객체를 생성하면 SuperClass의 생성자가 먼저 호출되고 SubClass의 생성자가 호출된다. 이는 아래의 코드를 통해서 확인할 ..
[Java] 업캐스팅 (UpCasting), 다운캐스팅 (DownCasting) 업캐스팅 (UpCasting) 부모클래스 타입으로 자식클래스 객체를 호출하는 것을 업캐스팅이라고 한다. 업캐스팅을 사용하게 되면 자식클래스를 부모클래스 타입으로 다루게 되기 때문에 부모클래스의 멤버와 메서드에만접근이 가능하다. 아래 코드처럼 작성하면 a, b 인스턴스는 overriding을 사용한 Print 메서드를 호출하지만 Number 타입을 사용할 수 있다. class Number { public int i, j; public void Print() { System.out.println(i); System.out.println(j); }}class Plus extends Number { @Override public void Print() { ..
[Java] 오버라이딩 (Overriding) 오버라이딩 (Overriding) 오버라이딩은 같은 이름의 메서드를 다른 동작을 하도록 정의한다는 점에서 오버로딩과 비슷한 개념이라고 할 수 있다. 오버로딩과 차이점은 상속관계에 있는 Class에서만 사용되며 요구하는 parameter가 동일해야 한다. class Number { public int i, j; public void calculate() { System.out.println("i : " + i + "j : " + j); }}class Plus extends Number { public void calculate() { System.out.println(i+j); }}class Mul extends Number { public void..

728x90
반응형