개발기록
Iterator 인터페이스 컬렉션 프레임워크는 컬렉션에 저장된 요소를 읽어오는 방법을 Iterator 인터페이스로 표준화! Iterator 인터페이스를 구현한 클래스의 인스턴스를 반환하는 iterator() 메소드를 정의하여 각 요소에 접근할 수 있게한다! Collection 인터페이스를 상속받는 List와 Set 인터페이스에서도 iterator() 메소드를 사용이 가능하다. List의 구현체 (Stack, Vector, ArrayList, LinkedList) public class IteratorTest { public static void main(String[] args) { ArrayList arrayList = new ArrayList(); arrayList.add("a"); arrayList..
바인딩(Binding)? 컴퓨터 프로그래밍에서 각종 값들이 확정되어 더 이상 변경할 수 없는 구속(bind) 상태가 되는 것. 프로그램 내에서 식별자(identifier)가 그 대상인 메모리 주소, 데이터형 또는 실제값으로 배정되는 것 동적 바인딩은 Runtime 시점에 해당 메소드를 구현하고 있는 실제 객체 타입을 기준으로 찾아가서 실행될 함수를 호출한다. 모든 인스턴스 메소드는 Runtime에 결정된다. 실행 이전에 값이 확정되면 정적 바인딩(static binding) static, private, final method 해당 - override불가능하여, compile 시점에 타입이 결정된다. 클래스(static) 메소드와 인스턴스 변수는 Compile 시에 결정된다. 따라서 instance인지,..
Compile-time polymorphism (Static binding) – Method overloading Runtime polymorphism (Dynamic binding) – Method overriding 오버로딩(Overloading)과 오버라이딩(Overriding)은 객체지향의 특징 중 하나인 다형성을 지원하는 방법입니다. 오버로딩(Overloading)은 한 클래스 내에서 각각 다른 파라미터를 가진 동명의 메소드를 정의한 것이고, 오버라이딩(Overriding)은 상속된 클래스에서 부모 클래스에 존재하는 메소드를 재정의한 것! 오버로딩과 오버라이딩된 동명의 메소드들 중에서 사용할 메소드를 결정하는 시점에 차이가 있습니다. - 오버로딩된 메소드는 컴파일(Compile) 시에 어떤 메소..
객체지향 프로그래밍의 특징 중 하나! 캡슐화 영어로는 Encapsulation이라 한다! 이름에서 느껴지듯 내부의 정보를 최소한으로 외부에 노출하는걸 의미합니다. 즉 내부에서 정의한 필드와 자료구조등에 대한 접근을 차단한다는 뜻입니다. 그리고 이를 제공해주는 메서드로 접근해야한다! - 객체의 필드와 메소드를 하나로 묶고, 실제 구현 내용을 외부에 감츤다. - 외부 객체는 제공하는 필드와 메소드만 이용할 수 있다. - 캡슐화는 외부의 잘못된 사용으로 인해 객체의 구조가 망가지는걸 방지한다 - 노출을 위해 접근 제한자(Access Modifier)를 사용한다. 간단한 예제! package encapsulation; public class ObjectA { private String name; private ..
String 배열 2개를 받아 1개의 배열로 만들어서 중복을 제거하는 코드! HashSet을 사용했다는 것이 이번 코드의 포인트! package testing.mergestring; import java.util.HashSet; public class MergeString { public static String[] uniqueNames(String[] names1, String[] names2) { HashSet temp = new HashSet(); for(String val : names1){ temp.add(val); } for(String val : names2){ temp.add(val); } String[] result= new String[temp.size()]; int idx =0; fo..
this와 this() 그리고 super와 super()는 맥락은 같지만 쓰임새는 조금씩 다르다! 이번 포스팅을 통해 완벽하게 알아보고자 한다. # this 현재 클래스에서 생성된 인스턴스를 의미. 생성된 인스턴스의 클래스 멤버변수를 지정할때 사용. # this 사용예제 package basic; public class ParentClass { private String data1; private String data2; public ParentClass(String data1, String data2) { this.data1 = data1; this.data2 = data2; } public ParentClass() { this.data1 = "data1"; this.data2 = "data2"; } ..
보호되어 있는 글입니다.
보호되어 있는 글입니다.
이번 포스팅에서 다룰 주제는 Call by value와 Call by reference 입니다! '값에 의한 호출' 이냐 '참조에 의한 호출' 이냐 말 그대로 해석될 수 있는데 한번 알아보도록 하겠습니다!~ # Call by Value package basic; public class CallByValue { public static void swap(int x, int y){ int temp = x; y = x; x = temp; } public static void main(String[] args) { int a = 10; int b = 20; System.out.println("swap() 호출 전 : a = " + a + ", b = " + b); swap(a, b); System.out.pri..
아래의 코드에서 Obj1 클래스를 정의하였다. package basic; class Obj1 { private String name; } public class ObjTest { public static void main(String[] args) { Obj1 obj1 = new Obj1(); System.out.println(obj1); } } 출력값 : basic.Obj1@4b67cf4d 위의 출력값의 의미는 무엇이고? Obj1 클래스 객체의 name 필드의 값을 가지려면 어떻게 해야할까? 객체의 배열도 마찬가지다. # 기본개념 자바의 모든 객체는 toString() 메소드를 가집니다. 객체의 값을 출력하면 그 메소드를 자동으로 호출한다. 자바의 모든 클래스의 슈퍼클래스인 Object 클래스 toSt..