Home 10월 12일 Today I Learned
Post
Cancel

10월 12일 Today I Learned

오늘 한 일

  • Java 언어를 학습하였다
  • 블로그 TIL을 작성하였다
  • 1일 1커밋을 하였다

느낀 점

내일 응용 프로그래밍 자바 수행 평가가 있기 때문에 이를 준비하기 위해서 Java 언어를 공부해봤는데 Java가 대표적인 객체 지향 언어라 그런가 다른 언어에도 도움되는 기본기를 쌓이는 거 같다 이제까진 수업 시간에 Java를 해도 어차피 내가 안 쓰는 언어라 설렁설렁 들은 감이 있는데 이제부터는 집중해서 들어야겠다

배운 점

Java 객체 지향 특성과 상속, 정적 멤버의 핵심 원칙

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
class A {
    int m = 2;
    static int n = 4;

    void method1() {
        System.out.println("A instance method");
    }

    static void method2() {
        System.out.println("A static method");
    }
}

class B extends A {
    int m = 6;
    static int n = 8;

    void method1() {
        System.out.println("B instance method");
    }

    static void method2() {
        System.out.println("B static method");
    }
}

public class Main {
    public static void main(String[] args) {
        A ab = new B();
        System.out.println(ab.m);  // 출력: 2
        System.out.println(ab.n);  // 출력: 4
        ab.method1();  // 출력: B instance method
        ab.method2();  // 출력: A static method
    }
}

해당 코드에서 출력 결과가

1
2
3
4
2
4
B instance method
A static method

이런식으로 출력되는 이유는

  1. 변수
    1
    2
    
    2
    4
    

    인스턴스 변수는 오버라이드되지 않는다 위 코드에서 클래스 B는 A를 상속하지만 변수 m과 n은 오버라이드되지 않기 때문에 A 타입의 참조 변수로 B 객체를 참조할 때 A 클래스의 변수들이 사용된다

  2. 인스턴스 메서드
    1
    
    B instance method
    

    인스턴스 메서드는 오버라이드될 수 있기에 A 타입의 참조 변수가 실제로 B 객체를 참조하고 있을 때 B 클래스의 오버라이드된 메서드가 호출된다

  3. 정적 메서드
    1
    
    A static method
    

    정적 메서드는 오버라이드될 수 없기에 클래스 B에서 method2를 정의하더라도 이것은 A의 method2를 오버라이드하는 것이 아니라 B에는 동일한 이름의 새로운 정적 메서드가 생성된다

내일 계획

내일은 안드로이드 강의를 해야겠다

This post is licensed under CC BY 4.0 by the author.

선택 정렬 알고리즘이란?

선형 탐색 알고리즘이란?