본문 바로가기
반응형

자바(Java)/자바기초28

[자바기초.021] 재귀 함수 실행(Tracing Recursive Methods) [자바기초.021] 재귀 함수 실행(Tracing Recursive Methods) [1] Tracing Recursive Methods 자바에서는 call stack이라는 것이 실행된 메소드들을 추적합니다. 스택(stack)이라는 것이 무엇인지 알아야 재귀함수(Recursive method) 실행과정을 이해할 수 있습니다. [2] 스택(stack) 스택은 LIFO(Last In First Out) 원칙을 따르는 선형 데이터 구조입니다. 이는 스택 내부에 삽입된 마지막 요소가 먼저 제거됨을 의미합니다. 자바에서는 위와 같은 stack구조로 메소드가 저장되고 실행되는 것을 call stack 이라고 부릅니다. 위 그림에서는 다음을 수행할 수 있습니다. 1.stack안에 새 데이터를 넣기 2.상단 데이터 제.. 2024. 3. 17.
[자바기초.020] 재귀(Recursion) [자바기초.020] 재귀(Recursion) [1] 재귀(Recursion) 이란? 재귀는 "원래 자리로 되돌아 온다"라는 뜻이다.(두 "재": 재차, 두 번, 다시 한번 / 돌아갈 "귀": 돌아가다) 자바에서는 "재귀함수(Recursive method)"라는 말로 사용되고, 함수 자기 자신을 다시 실행시키는 형태를 말한다. [예제1] 재귀 함수의 아래 예시 코드를 보자. HTML 삽입 미리보기할 수 없는 소스 위 코드에서 재귀함수를 실행하는 부분(함수 자신을 다시 call 하는 부분)은 몇 번째 줄이가요? => ( 4 번째 줄) 위의 코드는 글자를 출력하고 다시 자기 자신을 계속 호출(실행)하는 함수이다. 그래서 이 함수는 무한 재귀(infinite recursion)으로서 실행에 끝이 없다. 따라서 .. 2024. 3. 17.
[자바기초.019] Object Superclass [자바기초.019] Object Superclass [1] Object Superclass 자바에서 Object class는 다른 모든 클래스의 superclass입니다. Object 클래스에는 여러가지 메소드가 있는데, 그 중에서 AP CSA 시험에서 강조하는 2가지 메소드( toString, equals )에 대해서 알아보겠습니다.(아래는 AP CSA시험에서 제공하는 Java Quick Reference입니다.) [2] toString( ) 메소드 Object 클래스 중에 오버라이드(Override)를 많이 하는 메소드 중의 하나로, toString()이 있습니다. toString()메소드는 객체(object)의 특성을 출력하는 데에 많이 사용됩니다. 내가 만든 클래스에서 toString()을 오버라.. 2024. 3. 17.
[자바기초.018] 다형성(Polymorphism) [자바기초.018] 다형성(Polymorphism) [1] 다형성(Polymorphism)이란? 다형성(Polymorphism)은 poly + morphism의 합성어이다. poly: 많은(many) morphism: form(형태) 즉, 다형성(Polymorphism)은 "많은 형태(many form)"라는 뜻으로 직역된다. 자바(Java)에서 다형성(polymorphism)이란, 하나의 객체(object)가 여러 가지 타입(type)을 가질 수 있는 것을 의미합니다. 다형성은 상속, 추상화와 더불어 객체 지향 프로그래밍을 구성하는 중요한 특징 중 하나입니다. 자바에서는 이러한 다형성을 부모 클래스 타입의 참조 변수로 자식 클래스 타입의 인스턴스를 참조할 수 있도록 하여 구현하고 있습니다.(ex: Pa.. 2024. 3. 17.
[자바기초.017] 상속 계층(Inheritance Hierarchies) [자바기초.017] 상속 계층(Inheritance Hierarchies) [1] 상속 계층 하나의 superclass에서 여러 개의 subclass가 상속을 받는 관계일 때, 상속 계층(inheritance hierarchy)로 표시하면 코딩하는 데에 도움이 될 수 있다. 위 그림을 예로 들면, Square is-a Rectangle 이어서 Square 클래스는 Rectangle 클래스의 subclass 입니다. 그리고 Rectangle is-a Shape 이어서 Rectangle 클래스는 Shape 클래스의 subclass 입니다. 자바에서 Object 클래스는 계층(hierarchy)의 가장 꼭대기에 있는 클래스입니다. Object 클래스는 모든 자바 클래스의 최고 조상 클래스가 됩니다. 따라서 자.. 2024. 3. 15.
[자바기초.017] super 키워드 [자바기초.017] super 키워드 [1] super 키워드 subclass는 superclass로부터 상속받은 필드와 메소드를 사용할 수 있습니다. 그런데 subclass가 superclass의 메소드를 재정의 해서 사용하는 "오버라이드(override)"를 했다고 가정했을 때, 만약 superclass의 override된 메소드를 사용하고 싶다면 어떻게 해야 할까요? 이럴 때 바로 super.method()로 superclass의 메소드를 실행할 수 있습니다. [2] super의 2가지 쓰임새 super() / super(arguments): superclass의 생성자(constructor)를 subclass의 생성자 첫 줄에서 실행할 때 사용. super.method() : superclass의.. 2024. 3. 15.
[자바기초.015] 오버라이딩(Overriding) [자바기초.015] 메소드 오버라이딩(Overriding) [1] 메소드 오버라이딩(Method Overriding) 자바에서 자식 클래스는 부모 클래스의 private 멤버를 제외한 모든 메소드를 상속받습니다. 이렇게 상속받은 메소드는 그대로 사용해도 되고, 필요한 동작을 위해 재정의하여 사용할 수도 있습니다. 메소드 오버라이딩(Overriding)이란 상속받은 부모 클래스의 메소드(Method)를 재정의하여 사용하는 것을 말합니다. ◈주의사항◈ -오버라이딩(Overriding): 상속 받은 메소드를 재정의 하는 것(오버라이딩하고자 하는 메소드의 이름, 매개변수, 리턴형(return type) 이 모두 같아야 한다.) -오버로딩(Overloading): 기존에 없는 새로운 메소드를 추가하는 것(메소드의.. 2024. 3. 15.
[자바기초.014] is-a & has-a 관계 [자바기초.014] is-a & has-a 관계 [1] is - a 관계(relationship) is-a 관계는 ~이다 라는 뜻으로 아래와 같은 예시로 이해할 수 있다. "사람은 동물이다", "강아지는 동물이다" is-a 관계는 상속(Inheritance)으로 코딩하는 것이 효율적이다. [2] has - a 관계(relationship) has-a 관계는 ~을 가지고 있다 라는 뜻입니다. has-a 관계는 상속을 사용하지 않고 다른 클래스의 field나 method 등을 가져와서 사용한다. [3] 예제 코드로 is-a & has-a 관계 이해하기 Course, Student, Apcourse 라는 3개의 클래스를 코딩한 아래의 예제 코드를 보세요. 그리고 이 3개 클래스의 관계는 아래 그림과 같습니다... 2024. 3. 14.
[자바기초.013] 상속과 생성자 [자바기초.013] 상속과 생성자 [1] 상속 관계에서 private 변수를 어떻게 다룰것인가? subclass는 자신이 확장하는 superclass에서 public method를 상속하지만 superclass의 private instance variable에 직접 액세스할 수는 없습니다. 그리고 subclass는 superclass의 생성자(constructor)를 상속하지 않습니다. 하지만 상속된 인스턴스 변수는 적절하게 초기화되어야 합니다. 그렇지 않으면 상속된 메서드(method) 중 어느 것도 제대로 작동하지 않을 것입니다. 그렇다면 subclass가 superclass의 private variable을 어떻게 초기화할 수 있을까요? [예제1] 아래의 상속 관계를 가지는 코드를 보고 생성자 부분.. 2024. 3. 13.
728x90
반응형